📄 resolver.h
字号:
* @param pf Pool factory where the memory pool will be created from. * @param name Optional resolver name to identify the instance in * the log. * @param options Optional options, must be zero for now. * @param timer Optional timer heap instance to be used by the resolver. * If timer heap is not specified, an internal timer will be * created, and application would need to poll the resolver * periodically. * @param ioqueue Optional I/O Queue instance to be used by the resolver. * If ioqueue is not specified, an internal one will be * created, and application would need to poll the resolver * periodically. * @param p_resolver Pointer to receive the resolver instance. * * @return PJ_SUCCESS on success, or the appropriate error code, */PJ_DECL(pj_status_t) pj_dns_resolver_create(pj_pool_factory *pf, const char *name, unsigned options, pj_timer_heap_t *timer, pj_ioqueue_t *ioqueue, pj_dns_resolver **p_resolver);/** * Update the name servers for the DNS resolver. The name servers MUST be * configured before any resolution can be done. The order of nameservers * specifies their priority; the first name server will be tried first * before the next in the list. * * @param resolver The resolver instance. * @param count Number of name servers in the array. * @param servers Array of name server IP addresses or hostnames. If * hostname is specified, the hostname must be resolvable * with pj_gethostbyname(). * @param ports Optional array of ports. If this argument is NULL, * the nameserver will use default port. * * @return PJ_SUCCESS on success, or the appropriate error code, */PJ_DECL(pj_status_t) pj_dns_resolver_set_ns(pj_dns_resolver *resolver, unsigned count, const pj_str_t servers[], const pj_uint16_t ports[]);/** * Get the resolver current settings. * * @param resolver The resolver instance. * @param st Buffer to be filled up with resolver settings. * * @return The query timeout setting, in seconds. */PJ_DECL(pj_status_t) pj_dns_resolver_get_settings(pj_dns_resolver *resolver, pj_dns_settings *st);/** * Modify the resolver settings. Application should initialize the settings * by retrieving current settings first before applying new settings, to * ensure that all fields are initialized properly. * * @param resolver The resolver instance. * @param st The resolver settings. * * @return PJ_SUCCESS on success, or the appropriate error code, */PJ_DECL(pj_status_t) pj_dns_resolver_set_settings(pj_dns_resolver *resolver, const pj_dns_settings *st);/** * Poll for events from the resolver. This function MUST be called * periodically when the resolver is using it's own timer or ioqueue * (in other words, when NULL is specified as either \a timer or * \a ioqueue argument in #pj_dns_resolver_create()). * * @param resolver The resolver instance. * @param timeout Maximum time to wait for event occurence. If this * argument is NULL, this function will wait forever * until events occur. */PJ_DECL(void) pj_dns_resolver_handle_events(pj_dns_resolver *resolver, const pj_time_val *timeout);/** * Destroy DNS resolver instance. * * @param resolver The resolver object to be destryed * @param notify If non-zero, all pending asynchronous queries will be * cancelled and its callback will be called. If FALSE, * then no callback will be called. * * @return PJ_SUCCESS on success, or the appropriate error code, */PJ_DECL(pj_status_t) pj_dns_resolver_destroy(pj_dns_resolver *resolver, pj_bool_t notify);/** * Create and start asynchronous DNS query for a single resource. Depending * on whether response cache is available, this function will either start * an asynchronous DNS query or call the callback immediately. * * If response is not available in the cache, an asynchronous query will be * started, and callback will be called at some time later when the query * completes. If \a p_query argument is not NULL, it will be filled with * the asynchronous query object. * * If response is available in the cache, the callback will be called * immediately before this function returns. In this case, if \a p_query * argument is not NULL, the value will be set to NULL since no new query * is started. * * @param resolver The resolver object. * @param name The name to be resolved. * @param type The type of resource (see #pj_dns_type constants). * @param options Optional options, must be zero for now. * @param cb Callback to be called when the query completes, * either successfully or with failure. * @param user_data Arbitrary user data to be associated with the query, * and which will be given back in the callback. * @param p_query Optional pointer to receive the query object, if one * was started. If this pointer is specified, a NULL may * be returned if response cache is available immediately. * * @return PJ_SUCCESS if either an asynchronous query has been * started successfully or response cache is available and * the user callback has been called. */PJ_DECL(pj_status_t) pj_dns_resolver_start_query(pj_dns_resolver *resolver, const pj_str_t *name, int type, unsigned options, pj_dns_callback *cb, void *user_data, pj_dns_async_query **p_query);/** * Cancel a pending query. * * @param query The pending asynchronous query to be cancelled. * @param notify If non-zero, the callback will be called with failure * status to notify that the query has been cancelled. * * @return PJ_SUCCESS on success, or the appropriate error code, */PJ_DECL(pj_status_t) pj_dns_resolver_cancel_query(pj_dns_async_query *query, pj_bool_t notify);/** * Put the specified DNS packet into DNS cache. This function is mainly used * for testing the resolver, however it can also be used to inject entries * into the resolver. * * The packet MUST contain either answer section or query section so that * it can be indexed. * * @param resolver The resolver instance. * @param pkt DNS packet to be added to the DNS cache. If the packet * matches existing entry, it will update the entry. * @param set_ttl If the value is PJ_FALSE, the entry will not expire * (so use with care). Otherwise cache expiration will be * calculated based on the TTL of the answeres. * * @return PJ_SUCCESS on success, or the appropriate error code. */PJ_DECL(pj_status_t) pj_dns_resolver_add_entry(pj_dns_resolver *resolver, const pj_dns_parsed_packet *pkt, pj_bool_t set_ttl);/** * Get the total number of response in the response cache. * * @param resolver The resolver instance. * * @return Current number of entries being stored in the response * cache. */PJ_DECL(unsigned) pj_dns_resolver_get_cached_count(pj_dns_resolver *resolver);/** * Dump resolver state to the log. * * @param resolver The resolver instance. * @param detail Will print detailed entries. */PJ_DECL(void) pj_dns_resolver_dump(pj_dns_resolver *resolver, pj_bool_t detail);/** * @} */PJ_END_DECL#endif /* __PJLIB_UTIL_RESOLVER_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -