⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rdatasetiter.h

📁 非常好的dns解析软件
💻 H
字号:
/* * Copyright (C) 2004, 2005  Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2001  Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. *//* $Id: rdatasetiter.h,v 1.15.18.2 2005/04/29 00:16:19 marka Exp $ */#ifndef DNS_RDATASETITER_H#define DNS_RDATASETITER_H 1/***** ***** Module Info *****//*! \file * \brief * The DNS Rdataset Iterator interface allows iteration of all of the * rdatasets at a node. * * The dns_rdatasetiter_t type is like a "virtual class".  To actually use * it, an implementation of the class is required.  This implementation is * supplied by the database. * * It is the client's responsibility to call dns_rdataset_disassociate() * on all rdatasets returned. * * XXX more XXX * * MP: *\li	The iterator itself is not locked.  The caller must ensure *	synchronization. * *\li	The iterator methods ensure appropriate database locking. * * Reliability: *\li	No anticipated impact. * * Resources: *\li	TBS * * Security: *\li	No anticipated impact. * * Standards: *\li	None. *//***** ***** Imports *****/#include <isc/lang.h>#include <isc/magic.h>#include <isc/stdtime.h>#include <dns/types.h>ISC_LANG_BEGINDECLS/***** ***** Types *****/typedef struct dns_rdatasetitermethods {	void		(*destroy)(dns_rdatasetiter_t **iteratorp);	isc_result_t	(*first)(dns_rdatasetiter_t *iterator);	isc_result_t	(*next)(dns_rdatasetiter_t *iterator);	void		(*current)(dns_rdatasetiter_t *iterator,				   dns_rdataset_t *rdataset);} dns_rdatasetitermethods_t;#define DNS_RDATASETITER_MAGIC	     ISC_MAGIC('D','N','S','i')#define DNS_RDATASETITER_VALID(i)    ISC_MAGIC_VALID(i, DNS_RDATASETITER_MAGIC)/*% * This structure is actually just the common prefix of a DNS db * implementation's version of a dns_rdatasetiter_t. * \brief * Direct use of this structure by clients is forbidden.  DB implementations * may change the structure.  'magic' must be #DNS_RDATASETITER_MAGIC for * any of the dns_rdatasetiter routines to work.  DB implementations must * maintain all DB rdataset iterator invariants. */struct dns_rdatasetiter {	/* Unlocked. */	unsigned int			magic;	dns_rdatasetitermethods_t *	methods;	dns_db_t *			db;	dns_dbnode_t *			node;	dns_dbversion_t *		version;	isc_stdtime_t			now;};voiddns_rdatasetiter_destroy(dns_rdatasetiter_t **iteratorp);/*%< * Destroy '*iteratorp'. * * Requires: * *\li	'*iteratorp' is a valid iterator. * * Ensures: * *\li	All resources used by the iterator are freed. * *\li	*iteratorp == NULL. */isc_result_tdns_rdatasetiter_first(dns_rdatasetiter_t *iterator);/*%< * Move the rdataset cursor to the first rdataset at the node (if any). * * Requires: *\li	'iterator' is a valid iterator. * * Returns: *\li	ISC_R_SUCCESS *\li	ISC_R_NOMORE			There are no rdatasets at the node. * *\li	Other results are possible, depending on the DB implementation. */isc_result_tdns_rdatasetiter_next(dns_rdatasetiter_t *iterator);/*%< * Move the rdataset cursor to the next rdataset at the node (if any). * * Requires: *\li	'iterator' is a valid iterator. * * Returns: *\li	ISC_R_SUCCESS *\li	ISC_R_NOMORE			There are no more rdatasets at the *					node. * *\li	Other results are possible, depending on the DB implementation. */voiddns_rdatasetiter_current(dns_rdatasetiter_t *iterator,			 dns_rdataset_t *rdataset);/*%< * Return the current rdataset. * * Requires: *\li	'iterator' is a valid iterator. * *\li	'rdataset' is a valid, disassociated rdataset. * *\li	The rdataset cursor of 'iterator' is at a valid location (i.e. the *	result of last call to a cursor movement command was #ISC_R_SUCCESS). */ISC_LANG_ENDDECLS#endif /* DNS_RDATASETITER_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -