- refresh libevent libraries
This commit is contained in:
parent
76156ca5f7
commit
cdf8b0972e
|
|
@ -90,9 +90,10 @@ typedef void (*evbuffer_cb)(struct evbuffer *buffer, size_t old_len, size_t new_
|
||||||
@param cb the callback function to invoke when the evbuffer is modified,
|
@param cb the callback function to invoke when the evbuffer is modified,
|
||||||
or NULL to remove all callbacks.
|
or NULL to remove all callbacks.
|
||||||
@param cbarg an argument to be provided to the callback function
|
@param cbarg an argument to be provided to the callback function
|
||||||
|
@return 0 if successful, or -1 on error
|
||||||
*/
|
*/
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
void evbuffer_setcb(struct evbuffer *buffer, evbuffer_cb cb, void *cbarg);
|
int evbuffer_setcb(struct evbuffer *buffer, evbuffer_cb cb, void *cbarg);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -491,7 +491,7 @@ short bufferevent_get_enabled(struct bufferevent *bufev);
|
||||||
|
|
||||||
(In other words, if reading or writing is disabled, or if the
|
(In other words, if reading or writing is disabled, or if the
|
||||||
bufferevent's read or write operation has been suspended because
|
bufferevent's read or write operation has been suspended because
|
||||||
there's no data to write, or not enough banwidth, or so on, the
|
there's no data to write, or not enough bandwidth, or so on, the
|
||||||
timeout isn't active. The timeout only becomes active when we we're
|
timeout isn't active. The timeout only becomes active when we we're
|
||||||
willing to actually read or write.)
|
willing to actually read or write.)
|
||||||
|
|
||||||
|
|
@ -518,6 +518,9 @@ int bufferevent_set_timeouts(struct bufferevent *bufev,
|
||||||
On input, a bufferevent does not invoke the user read callback unless
|
On input, a bufferevent does not invoke the user read callback unless
|
||||||
there is at least low watermark data in the buffer. If the read buffer
|
there is at least low watermark data in the buffer. If the read buffer
|
||||||
is beyond the high watermark, the bufferevent stops reading from the network.
|
is beyond the high watermark, the bufferevent stops reading from the network.
|
||||||
|
But be aware that bufferevent input/read buffer can overrun high watermark
|
||||||
|
limit (typical example is openssl bufferevent), so you should not relay in
|
||||||
|
this.
|
||||||
|
|
||||||
On output, the user write callback is invoked whenever the buffered data
|
On output, the user write callback is invoked whenever the buffered data
|
||||||
falls below the low watermark. Filters that write to this bufev will try
|
falls below the low watermark. Filters that write to this bufev will try
|
||||||
|
|
@ -566,7 +569,7 @@ void bufferevent_unlock(struct bufferevent *bufev);
|
||||||
/**
|
/**
|
||||||
* Public interface to manually increase the reference count of a bufferevent
|
* Public interface to manually increase the reference count of a bufferevent
|
||||||
* this is useful in situations where a user may reference the bufferevent
|
* this is useful in situations where a user may reference the bufferevent
|
||||||
* somewhere eles (unknown to libevent)
|
* somewhere else (unknown to libevent)
|
||||||
*
|
*
|
||||||
* @param bufev the bufferevent to increase the refcount on
|
* @param bufev the bufferevent to increase the refcount on
|
||||||
*
|
*
|
||||||
|
|
@ -799,7 +802,7 @@ void ev_token_bucket_cfg_free(struct ev_token_bucket_cfg *cfg);
|
||||||
They are: socket-based bufferevents (normal and IOCP-based), and SSL-based
|
They are: socket-based bufferevents (normal and IOCP-based), and SSL-based
|
||||||
bufferevents.
|
bufferevents.
|
||||||
|
|
||||||
Return 0 on sucess, -1 on failure.
|
Return 0 on success, -1 on failure.
|
||||||
*/
|
*/
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
int bufferevent_set_rate_limit(struct bufferevent *bev,
|
int bufferevent_set_rate_limit(struct bufferevent *bev,
|
||||||
|
|
@ -850,7 +853,7 @@ int bufferevent_rate_limit_group_set_cfg(
|
||||||
|
|
||||||
The default min-share is currently 64 bytes.
|
The default min-share is currently 64 bytes.
|
||||||
|
|
||||||
Returns 0 on success, -1 on faulre.
|
Returns 0 on success, -1 on failure.
|
||||||
*/
|
*/
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
int bufferevent_rate_limit_group_set_min_share(
|
int bufferevent_rate_limit_group_set_min_share(
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,8 @@
|
||||||
#ifndef EVENT2_BUFFEREVENT_COMPAT_H_INCLUDED_
|
#ifndef EVENT2_BUFFEREVENT_COMPAT_H_INCLUDED_
|
||||||
#define EVENT2_BUFFEREVENT_COMPAT_H_INCLUDED_
|
#define EVENT2_BUFFEREVENT_COMPAT_H_INCLUDED_
|
||||||
|
|
||||||
|
#include <event2/visibility.h>
|
||||||
|
|
||||||
#define evbuffercb bufferevent_data_cb
|
#define evbuffercb bufferevent_data_cb
|
||||||
#define everrorcb bufferevent_event_cb
|
#define everrorcb bufferevent_event_cb
|
||||||
|
|
||||||
|
|
@ -72,6 +74,7 @@
|
||||||
error occurred
|
error occurred
|
||||||
@see bufferevent_base_set(), bufferevent_free()
|
@see bufferevent_base_set(), bufferevent_free()
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
struct bufferevent *bufferevent_new(evutil_socket_t fd,
|
struct bufferevent *bufferevent_new(evutil_socket_t fd,
|
||||||
evbuffercb readcb, evbuffercb writecb, everrorcb errorcb, void *cbarg);
|
evbuffercb readcb, evbuffercb writecb, everrorcb errorcb, void *cbarg);
|
||||||
|
|
||||||
|
|
@ -83,6 +86,7 @@ struct bufferevent *bufferevent_new(evutil_socket_t fd,
|
||||||
@param timeout_read the read timeout
|
@param timeout_read the read timeout
|
||||||
@param timeout_write the write timeout
|
@param timeout_write the write timeout
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
void bufferevent_settimeout(struct bufferevent *bufev,
|
void bufferevent_settimeout(struct bufferevent *bufev,
|
||||||
int timeout_read, int timeout_write);
|
int timeout_read, int timeout_write);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -179,11 +179,39 @@ extern "C" {
|
||||||
|
|
||||||
#define DNS_QUERY_NO_SEARCH 1
|
#define DNS_QUERY_NO_SEARCH 1
|
||||||
|
|
||||||
|
/* Allow searching */
|
||||||
#define DNS_OPTION_SEARCH 1
|
#define DNS_OPTION_SEARCH 1
|
||||||
|
/* Parse "nameserver" and add default if no such section */
|
||||||
#define DNS_OPTION_NAMESERVERS 2
|
#define DNS_OPTION_NAMESERVERS 2
|
||||||
|
/* Parse additional options like:
|
||||||
|
* - timeout:
|
||||||
|
* - getaddrinfo-allow-skew:
|
||||||
|
* - max-timeouts:
|
||||||
|
* - max-inflight:
|
||||||
|
* - attempts:
|
||||||
|
* - randomize-case:
|
||||||
|
* - initial-probe-timeout:
|
||||||
|
*/
|
||||||
#define DNS_OPTION_MISC 4
|
#define DNS_OPTION_MISC 4
|
||||||
|
/* Load hosts file (i.e. "/etc/hosts") */
|
||||||
#define DNS_OPTION_HOSTSFILE 8
|
#define DNS_OPTION_HOSTSFILE 8
|
||||||
#define DNS_OPTIONS_ALL 15
|
/**
|
||||||
|
* All above:
|
||||||
|
* - DNS_OPTION_SEARCH
|
||||||
|
* - DNS_OPTION_NAMESERVERS
|
||||||
|
* - DNS_OPTION_MISC
|
||||||
|
* - DNS_OPTION_HOSTSFILE
|
||||||
|
*/
|
||||||
|
#define DNS_OPTIONS_ALL ( \
|
||||||
|
DNS_OPTION_SEARCH | \
|
||||||
|
DNS_OPTION_NAMESERVERS | \
|
||||||
|
DNS_OPTION_MISC | \
|
||||||
|
DNS_OPTION_HOSTSFILE | \
|
||||||
|
0 \
|
||||||
|
)
|
||||||
|
/* Do not "default" nameserver (i.e. "127.0.0.1:53") if there is no nameservers
|
||||||
|
* in resolv.conf, (iff DNS_OPTION_NAMESERVERS is set) */
|
||||||
|
#define DNS_OPTION_NAMESERVERS_NO_DEFAULT 16
|
||||||
|
|
||||||
/* Obsolete name for DNS_QUERY_NO_SEARCH */
|
/* Obsolete name for DNS_QUERY_NO_SEARCH */
|
||||||
#define DNS_NO_SEARCH DNS_QUERY_NO_SEARCH
|
#define DNS_NO_SEARCH DNS_QUERY_NO_SEARCH
|
||||||
|
|
@ -208,6 +236,10 @@ struct event_base;
|
||||||
/** Flag for evdns_base_new: Do not prevent the libevent event loop from
|
/** Flag for evdns_base_new: Do not prevent the libevent event loop from
|
||||||
* exiting when we have no active dns requests. */
|
* exiting when we have no active dns requests. */
|
||||||
#define EVDNS_BASE_DISABLE_WHEN_INACTIVE 0x8000
|
#define EVDNS_BASE_DISABLE_WHEN_INACTIVE 0x8000
|
||||||
|
/** Flag for evdns_base_new: If EVDNS_BASE_INITIALIZE_NAMESERVERS isset, do not
|
||||||
|
* add default nameserver if there are no nameservers in resolv.conf
|
||||||
|
* @see DNS_OPTION_NAMESERVERS_NO_DEFAULT */
|
||||||
|
#define EVDNS_BASE_NAMESERVERS_NO_DEFAULT 0x10000
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Initialize the asynchronous DNS library.
|
Initialize the asynchronous DNS library.
|
||||||
|
|
@ -218,7 +250,7 @@ struct event_base;
|
||||||
|
|
||||||
@param event_base the event base to associate the dns client with
|
@param event_base the event base to associate the dns client with
|
||||||
@param flags any of EVDNS_BASE_INITIALIZE_NAMESERVERS|
|
@param flags any of EVDNS_BASE_INITIALIZE_NAMESERVERS|
|
||||||
EVDNS_BASE_DISABLE_WHEN_INACTIVE
|
EVDNS_BASE_DISABLE_WHEN_INACTIVE|EVDNS_BASE_NAMESERVERS_NO_DEFAULT
|
||||||
@return evdns_base object if successful, or NULL if an error occurred.
|
@return evdns_base object if successful, or NULL if an error occurred.
|
||||||
@see evdns_base_free()
|
@see evdns_base_free()
|
||||||
*/
|
*/
|
||||||
|
|
@ -423,7 +455,8 @@ void evdns_cancel_request(struct evdns_base *base, struct evdns_request *req);
|
||||||
The currently available configuration options are:
|
The currently available configuration options are:
|
||||||
|
|
||||||
ndots, timeout, max-timeouts, max-inflight, attempts, randomize-case,
|
ndots, timeout, max-timeouts, max-inflight, attempts, randomize-case,
|
||||||
bind-to, initial-probe-timeout, getaddrinfo-allow-skew.
|
bind-to, initial-probe-timeout, getaddrinfo-allow-skew,
|
||||||
|
so-rcvbuf, so-sndbuf.
|
||||||
|
|
||||||
In versions before Libevent 2.0.3-alpha, the option name needed to end with
|
In versions before Libevent 2.0.3-alpha, the option name needed to end with
|
||||||
a colon.
|
a colon.
|
||||||
|
|
@ -453,7 +486,7 @@ int evdns_base_set_option(struct evdns_base *base, const char *option, const cha
|
||||||
|
|
||||||
@param base the evdns_base to which to apply this operation
|
@param base the evdns_base to which to apply this operation
|
||||||
@param flags any of DNS_OPTION_NAMESERVERS|DNS_OPTION_SEARCH|DNS_OPTION_MISC|
|
@param flags any of DNS_OPTION_NAMESERVERS|DNS_OPTION_SEARCH|DNS_OPTION_MISC|
|
||||||
DNS_OPTION_HOSTSFILE|DNS_OPTIONS_ALL
|
DNS_OPTION_HOSTSFILE|DNS_OPTIONS_ALL|DNS_OPTION_NAMESERVERS_NO_DEFAULT
|
||||||
@param filename the path to the resolv.conf file
|
@param filename the path to the resolv.conf file
|
||||||
@return 0 if successful, or various positive error codes if an error
|
@return 0 if successful, or various positive error codes if an error
|
||||||
occurred (see above)
|
occurred (see above)
|
||||||
|
|
@ -478,6 +511,7 @@ int evdns_base_resolv_conf_parse(struct evdns_base *base, int flags, const char
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evdns_base_load_hosts(struct evdns_base *base, const char *hosts_fname);
|
int evdns_base_load_hosts(struct evdns_base *base, const char *hosts_fname);
|
||||||
|
|
||||||
|
#if defined(EVENT_IN_DOXYGEN_) || defined(_WIN32)
|
||||||
/**
|
/**
|
||||||
Obtain nameserver information using the Windows API.
|
Obtain nameserver information using the Windows API.
|
||||||
|
|
||||||
|
|
@ -488,7 +522,6 @@ int evdns_base_load_hosts(struct evdns_base *base, const char *hosts_fname);
|
||||||
@return 0 if successful, or -1 if an error occurred
|
@return 0 if successful, or -1 if an error occurred
|
||||||
@see evdns_resolv_conf_parse()
|
@see evdns_resolv_conf_parse()
|
||||||
*/
|
*/
|
||||||
#ifdef _WIN32
|
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evdns_base_config_windows_nameservers(struct evdns_base *);
|
int evdns_base_config_windows_nameservers(struct evdns_base *);
|
||||||
#define EVDNS_BASE_CONFIG_WINDOWS_NAMESERVERS_IMPLEMENTED
|
#define EVDNS_BASE_CONFIG_WINDOWS_NAMESERVERS_IMPLEMENTED
|
||||||
|
|
@ -615,7 +648,8 @@ typedef void (*evdns_request_callback_fn_type)(struct evdns_server_request *, vo
|
||||||
@param callback A function to invoke whenever we get a DNS request
|
@param callback A function to invoke whenever we get a DNS request
|
||||||
on the socket.
|
on the socket.
|
||||||
@param user_data Data to pass to the callback.
|
@param user_data Data to pass to the callback.
|
||||||
@return an evdns_server_port structure for this server port.
|
@return an evdns_server_port structure for this server port or NULL if
|
||||||
|
an error occurred.
|
||||||
*/
|
*/
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
struct evdns_server_port *evdns_add_server_port_with_base(struct event_base *base, evutil_socket_t socket, int flags, evdns_request_callback_fn_type callback, void *user_data);
|
struct evdns_server_port *evdns_add_server_port_with_base(struct event_base *base, evutil_socket_t socket, int flags, evdns_request_callback_fn_type callback, void *user_data);
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ extern "C" {
|
||||||
|
|
||||||
/* For int types. */
|
/* For int types. */
|
||||||
#include <event2/util.h>
|
#include <event2/util.h>
|
||||||
|
#include <event2/visibility.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Initialize the asynchronous DNS library.
|
Initialize the asynchronous DNS library.
|
||||||
|
|
@ -66,6 +67,7 @@ extern "C" {
|
||||||
@return 0 if successful, or -1 if an error occurred
|
@return 0 if successful, or -1 if an error occurred
|
||||||
@see evdns_shutdown()
|
@see evdns_shutdown()
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evdns_init(void);
|
int evdns_init(void);
|
||||||
|
|
||||||
struct evdns_base;
|
struct evdns_base;
|
||||||
|
|
@ -76,6 +78,7 @@ struct evdns_base;
|
||||||
@deprecated This function is deprecated because use of the global
|
@deprecated This function is deprecated because use of the global
|
||||||
evdns_base is error-prone.
|
evdns_base is error-prone.
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
struct evdns_base *evdns_get_global_base(void);
|
struct evdns_base *evdns_get_global_base(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -93,6 +96,7 @@ struct evdns_base *evdns_get_global_base(void);
|
||||||
active requests will return DNS_ERR_SHUTDOWN.
|
active requests will return DNS_ERR_SHUTDOWN.
|
||||||
@see evdns_init()
|
@see evdns_init()
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
void evdns_shutdown(int fail_requests);
|
void evdns_shutdown(int fail_requests);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -109,6 +113,7 @@ void evdns_shutdown(int fail_requests);
|
||||||
@return 0 if successful, or -1 if an error occurred
|
@return 0 if successful, or -1 if an error occurred
|
||||||
@see evdns_nameserver_ip_add()
|
@see evdns_nameserver_ip_add()
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evdns_nameserver_add(unsigned long int address);
|
int evdns_nameserver_add(unsigned long int address);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -126,6 +131,7 @@ int evdns_nameserver_add(unsigned long int address);
|
||||||
@return the number of configured nameservers
|
@return the number of configured nameservers
|
||||||
@see evdns_nameserver_add()
|
@see evdns_nameserver_add()
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evdns_count_nameservers(void);
|
int evdns_count_nameservers(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -140,6 +146,7 @@ int evdns_count_nameservers(void);
|
||||||
@return 0 if successful, or -1 if an error occurred
|
@return 0 if successful, or -1 if an error occurred
|
||||||
@see evdns_resume()
|
@see evdns_resume()
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evdns_clear_nameservers_and_suspend(void);
|
int evdns_clear_nameservers_and_suspend(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -155,6 +162,7 @@ int evdns_clear_nameservers_and_suspend(void);
|
||||||
@return 0 if successful, or -1 if an error occurred
|
@return 0 if successful, or -1 if an error occurred
|
||||||
@see evdns_clear_nameservers_and_suspend()
|
@see evdns_clear_nameservers_and_suspend()
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evdns_resume(void);
|
int evdns_resume(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -170,6 +178,7 @@ int evdns_resume(void);
|
||||||
@return 0 if successful, or -1 if an error occurred
|
@return 0 if successful, or -1 if an error occurred
|
||||||
@see evdns_nameserver_add()
|
@see evdns_nameserver_add()
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evdns_nameserver_ip_add(const char *ip_as_string);
|
int evdns_nameserver_ip_add(const char *ip_as_string);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -186,6 +195,7 @@ int evdns_nameserver_ip_add(const char *ip_as_string);
|
||||||
@return 0 if successful, or -1 if an error occurred
|
@return 0 if successful, or -1 if an error occurred
|
||||||
@see evdns_resolve_ipv6(), evdns_resolve_reverse(), evdns_resolve_reverse_ipv6()
|
@see evdns_resolve_ipv6(), evdns_resolve_reverse(), evdns_resolve_reverse_ipv6()
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evdns_resolve_ipv4(const char *name, int flags, evdns_callback_type callback, void *ptr);
|
int evdns_resolve_ipv4(const char *name, int flags, evdns_callback_type callback, void *ptr);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -198,6 +208,7 @@ int evdns_resolve_ipv4(const char *name, int flags, evdns_callback_type callback
|
||||||
@return 0 if successful, or -1 if an error occurred
|
@return 0 if successful, or -1 if an error occurred
|
||||||
@see evdns_resolve_ipv4(), evdns_resolve_reverse(), evdns_resolve_reverse_ipv6()
|
@see evdns_resolve_ipv4(), evdns_resolve_reverse(), evdns_resolve_reverse_ipv6()
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evdns_resolve_ipv6(const char *name, int flags, evdns_callback_type callback, void *ptr);
|
int evdns_resolve_ipv6(const char *name, int flags, evdns_callback_type callback, void *ptr);
|
||||||
|
|
||||||
struct in_addr;
|
struct in_addr;
|
||||||
|
|
@ -217,6 +228,7 @@ struct in6_addr;
|
||||||
@return 0 if successful, or -1 if an error occurred
|
@return 0 if successful, or -1 if an error occurred
|
||||||
@see evdns_resolve_reverse_ipv6()
|
@see evdns_resolve_reverse_ipv6()
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evdns_resolve_reverse(const struct in_addr *in, int flags, evdns_callback_type callback, void *ptr);
|
int evdns_resolve_reverse(const struct in_addr *in, int flags, evdns_callback_type callback, void *ptr);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -233,6 +245,7 @@ int evdns_resolve_reverse(const struct in_addr *in, int flags, evdns_callback_ty
|
||||||
@return 0 if successful, or -1 if an error occurred
|
@return 0 if successful, or -1 if an error occurred
|
||||||
@see evdns_resolve_reverse_ipv6()
|
@see evdns_resolve_reverse_ipv6()
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evdns_resolve_reverse_ipv6(const struct in6_addr *in, int flags, evdns_callback_type callback, void *ptr);
|
int evdns_resolve_reverse_ipv6(const struct in6_addr *in, int flags, evdns_callback_type callback, void *ptr);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -251,6 +264,7 @@ int evdns_resolve_reverse_ipv6(const struct in6_addr *in, int flags, evdns_callb
|
||||||
@param flags Ignored.
|
@param flags Ignored.
|
||||||
@return 0 if successful, or -1 if an error occurred
|
@return 0 if successful, or -1 if an error occurred
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evdns_set_option(const char *option, const char *val, int flags);
|
int evdns_set_option(const char *option, const char *val, int flags);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -278,6 +292,7 @@ int evdns_set_option(const char *option, const char *val, int flags);
|
||||||
occurred (see above)
|
occurred (see above)
|
||||||
@see resolv.conf(3), evdns_config_windows_nameservers()
|
@see resolv.conf(3), evdns_config_windows_nameservers()
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evdns_resolv_conf_parse(int flags, const char *const filename);
|
int evdns_resolv_conf_parse(int flags, const char *const filename);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -287,6 +302,7 @@ int evdns_resolv_conf_parse(int flags, const char *const filename);
|
||||||
caller to specify which evdns_base it applies to. The recommended
|
caller to specify which evdns_base it applies to. The recommended
|
||||||
function is evdns_base_search_clear().
|
function is evdns_base_search_clear().
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
void evdns_search_clear(void);
|
void evdns_search_clear(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -298,6 +314,7 @@ void evdns_search_clear(void);
|
||||||
|
|
||||||
@param domain the domain to be added to the search list
|
@param domain the domain to be added to the search list
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
void evdns_search_add(const char *domain);
|
void evdns_search_add(const char *domain);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -312,6 +329,7 @@ void evdns_search_add(const char *domain);
|
||||||
|
|
||||||
@param ndots the new ndots parameter
|
@param ndots the new ndots parameter
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
void evdns_search_ndots_set(const int ndots);
|
void evdns_search_ndots_set(const int ndots);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -322,9 +340,13 @@ void evdns_search_ndots_set(const int ndots);
|
||||||
function is evdns_add_server_port_with_base().
|
function is evdns_add_server_port_with_base().
|
||||||
|
|
||||||
*/
|
*/
|
||||||
struct evdns_server_port *evdns_add_server_port(evutil_socket_t socket, int flags, evdns_request_callback_fn_type callback, void *user_data);
|
EVENT2_EXPORT_SYMBOL
|
||||||
|
struct evdns_server_port *
|
||||||
|
evdns_add_server_port(evutil_socket_t socket, int flags,
|
||||||
|
evdns_request_callback_fn_type callback, void *user_data);
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evdns_config_windows_nameservers(void);
|
int evdns_config_windows_nameservers(void);
|
||||||
#define EVDNS_CONFIG_WINDOWS_NAMESERVERS_IMPLEMENTED
|
#define EVDNS_CONFIG_WINDOWS_NAMESERVERS_IMPLEMENTED
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -232,7 +232,7 @@ struct event_base
|
||||||
*
|
*
|
||||||
* Generally, you can create events with event_new(), then make them
|
* Generally, you can create events with event_new(), then make them
|
||||||
* pending with event_add(). As your event_base runs, it will run the
|
* pending with event_add(). As your event_base runs, it will run the
|
||||||
* callbacks of an events whose conditions are triggered. When you
|
* callbacks of an events whose conditions are triggered. When you no
|
||||||
* longer want the event, free it with event_free().
|
* longer want the event, free it with event_free().
|
||||||
*
|
*
|
||||||
* In more depth:
|
* In more depth:
|
||||||
|
|
@ -285,7 +285,7 @@ struct event
|
||||||
* There are many options that can be used to alter the behavior and
|
* There are many options that can be used to alter the behavior and
|
||||||
* implementation of an event_base. To avoid having to pass them all in a
|
* implementation of an event_base. To avoid having to pass them all in a
|
||||||
* complex many-argument constructor, we provide an abstract data type
|
* complex many-argument constructor, we provide an abstract data type
|
||||||
* wrhere you set up configation information before passing it to
|
* where you set up configuration information before passing it to
|
||||||
* event_base_new_with_config().
|
* event_base_new_with_config().
|
||||||
*
|
*
|
||||||
* @see event_config_new(), event_config_free(), event_base_new_with_config(),
|
* @see event_config_new(), event_config_free(), event_base_new_with_config(),
|
||||||
|
|
@ -632,7 +632,7 @@ int event_config_set_num_cpus_hint(struct event_config *cfg, int cpus);
|
||||||
/**
|
/**
|
||||||
* Record an interval and/or a number of callbacks after which the event base
|
* Record an interval and/or a number of callbacks after which the event base
|
||||||
* should check for new events. By default, the event base will run as many
|
* should check for new events. By default, the event base will run as many
|
||||||
* events are as activated at the higest activated priority before checking
|
* events are as activated at the highest activated priority before checking
|
||||||
* for new events. If you configure it by setting max_interval, it will check
|
* for new events. If you configure it by setting max_interval, it will check
|
||||||
* the time after each callback, and not allow more than max_interval to
|
* the time after each callback, and not allow more than max_interval to
|
||||||
* elapse before checking for new events. If you configure it by setting
|
* elapse before checking for new events. If you configure it by setting
|
||||||
|
|
@ -692,10 +692,7 @@ EVENT2_EXPORT_SYMBOL
|
||||||
void event_base_free(struct event_base *);
|
void event_base_free(struct event_base *);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
As event_free, but do not run finalizers.
|
As event_base_free, but do not run finalizers.
|
||||||
|
|
||||||
THIS IS AN EXPERIMENTAL API. IT MIGHT CHANGE BEFORE THE LIBEVENT 2.1 SERIES
|
|
||||||
BECOMES STABLE.
|
|
||||||
*/
|
*/
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
void event_base_free_nofinalize(struct event_base *);
|
void event_base_free_nofinalize(struct event_base *);
|
||||||
|
|
@ -944,9 +941,6 @@ int event_base_got_break(struct event_base *);
|
||||||
* To use this option safely, you may need to use event_finalize() or
|
* To use this option safely, you may need to use event_finalize() or
|
||||||
* event_free_finalize() in order to safely tear down an event in a
|
* event_free_finalize() in order to safely tear down an event in a
|
||||||
* multithreaded application. See those functions for more information.
|
* multithreaded application. See those functions for more information.
|
||||||
*
|
|
||||||
* THIS IS AN EXPERIMENTAL API. IT MIGHT CHANGE BEFORE THE LIBEVENT 2.1 SERIES
|
|
||||||
* BECOMES STABLE.
|
|
||||||
**/
|
**/
|
||||||
#define EV_FINALIZE 0x40
|
#define EV_FINALIZE 0x40
|
||||||
/**
|
/**
|
||||||
|
|
@ -963,11 +957,13 @@ int event_base_got_break(struct event_base *);
|
||||||
/**
|
/**
|
||||||
@name evtimer_* macros
|
@name evtimer_* macros
|
||||||
|
|
||||||
Aliases for working with one-shot timer events */
|
Aliases for working with one-shot timer events
|
||||||
|
If you need EV_PERSIST timer use event_*() functions.
|
||||||
|
*/
|
||||||
/**@{*/
|
/**@{*/
|
||||||
#define evtimer_assign(ev, b, cb, arg) \
|
#define evtimer_assign(ev, b, cb, arg) \
|
||||||
event_assign((ev), (b), -1, 0, (cb), (arg))
|
event_assign((ev), (b), -1, 0, (cb), (arg))
|
||||||
#define evtimer_new(b, cb, arg) event_new((b), -1, 0, (cb), (arg))
|
#define evtimer_new(b, cb, arg) event_new((b), -1, 0, (cb), (arg))
|
||||||
#define evtimer_add(ev, tv) event_add((ev), (tv))
|
#define evtimer_add(ev, tv) event_add((ev), (tv))
|
||||||
#define evtimer_del(ev) event_del(ev)
|
#define evtimer_del(ev) event_del(ev)
|
||||||
#define evtimer_pending(ev, tv) event_pending((ev), EV_TIMEOUT, (tv))
|
#define evtimer_pending(ev, tv) event_pending((ev), EV_TIMEOUT, (tv))
|
||||||
|
|
@ -990,6 +986,20 @@ int event_base_got_break(struct event_base *);
|
||||||
#define evsignal_initialized(ev) event_initialized(ev)
|
#define evsignal_initialized(ev) event_initialized(ev)
|
||||||
/**@}*/
|
/**@}*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
@name evuser_* macros
|
||||||
|
|
||||||
|
Aliases for working with user-triggered events
|
||||||
|
If you need EV_PERSIST event use event_*() functions.
|
||||||
|
*/
|
||||||
|
/**@{*/
|
||||||
|
#define evuser_new(b, cb, arg) event_new((b), -1, 0, (cb), (arg))
|
||||||
|
#define evuser_del(ev) event_del(ev)
|
||||||
|
#define evuser_pending(ev, tv) event_pending((ev), 0, (tv))
|
||||||
|
#define evuser_initialized(ev) event_initialized(ev)
|
||||||
|
#define evuser_trigger(ev) event_active((ev), 0, 0)
|
||||||
|
/**@}*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
A callback function for an event.
|
A callback function for an event.
|
||||||
|
|
||||||
|
|
@ -1029,7 +1039,7 @@ EVENT2_EXPORT_SYMBOL
|
||||||
void *event_self_cbarg(void);
|
void *event_self_cbarg(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Allocate and asssign a new event structure, ready to be added.
|
Allocate and assign a new event structure, ready to be added.
|
||||||
|
|
||||||
The function event_new() returns a new event that can be used in
|
The function event_new() returns a new event that can be used in
|
||||||
future calls to event_add() and event_del(). The fd and events
|
future calls to event_add() and event_del(). The fd and events
|
||||||
|
|
@ -1055,10 +1065,10 @@ void *event_self_cbarg(void);
|
||||||
The EV_TIMEOUT flag has no effect here.
|
The EV_TIMEOUT flag has no effect here.
|
||||||
|
|
||||||
It is okay to have multiple events all listening on the same fds; but
|
It is okay to have multiple events all listening on the same fds; but
|
||||||
they must either all be edge-triggered, or all not be edge triggerd.
|
they must either all be edge-triggered, or all not be edge triggered.
|
||||||
|
|
||||||
When the event becomes active, the event loop will run the provided
|
When the event becomes active, the event loop will run the provided
|
||||||
callbuck function, with three arguments. The first will be the provided
|
callback function, with three arguments. The first will be the provided
|
||||||
fd value. The second will be a bitfield of the events that triggered:
|
fd value. The second will be a bitfield of the events that triggered:
|
||||||
EV_READ, EV_WRITE, or EV_SIGNAL. Here the EV_TIMEOUT flag indicates
|
EV_READ, EV_WRITE, or EV_SIGNAL. Here the EV_TIMEOUT flag indicates
|
||||||
that a timeout occurred, and EV_ET indicates that an edge-triggered
|
that a timeout occurred, and EV_ET indicates that an edge-triggered
|
||||||
|
|
@ -1073,7 +1083,7 @@ void *event_self_cbarg(void);
|
||||||
@param callback_arg an argument to be passed to the callback function
|
@param callback_arg an argument to be passed to the callback function
|
||||||
|
|
||||||
@return a newly allocated struct event that must later be freed with
|
@return a newly allocated struct event that must later be freed with
|
||||||
event_free().
|
event_free() or NULL if an error occurred.
|
||||||
@see event_free(), event_add(), event_del(), event_assign()
|
@see event_free(), event_add(), event_del(), event_assign()
|
||||||
*/
|
*/
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
|
|
@ -1124,18 +1134,14 @@ int event_assign(struct event *, struct event_base *, evutil_socket_t, short, ev
|
||||||
/**
|
/**
|
||||||
Deallocate a struct event * returned by event_new().
|
Deallocate a struct event * returned by event_new().
|
||||||
|
|
||||||
If the event is pending or active, first make it non-pending and
|
If the event is pending or active, this function makes it non-pending
|
||||||
non-active.
|
and non-active first.
|
||||||
*/
|
*/
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
void event_free(struct event *);
|
void event_free(struct event *);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Callback type for event_finalize and event_free_finalize().
|
* Callback type for event_finalize and event_free_finalize().
|
||||||
*
|
|
||||||
* THIS IS AN EXPERIMENTAL API. IT MIGHT CHANGE BEFORE THE LIBEVENT 2.1 SERIES
|
|
||||||
* BECOMES STABLE.
|
|
||||||
*
|
|
||||||
**/
|
**/
|
||||||
typedef void (*event_finalize_callback_fn)(struct event *, void *);
|
typedef void (*event_finalize_callback_fn)(struct event *, void *);
|
||||||
/**
|
/**
|
||||||
|
|
@ -1163,13 +1169,10 @@ typedef void (*event_finalize_callback_fn)(struct event *, void *);
|
||||||
event_finalize() does not.
|
event_finalize() does not.
|
||||||
|
|
||||||
A finalizer callback must not make events pending or active. It must not
|
A finalizer callback must not make events pending or active. It must not
|
||||||
add events, activate events, or attempt to "resucitate" the event being
|
add events, activate events, or attempt to "resuscitate" the event being
|
||||||
finalized in any way.
|
finalized in any way.
|
||||||
|
|
||||||
THIS IS AN EXPERIMENTAL API. IT MIGHT CHANGE BEFORE THE LIBEVENT 2.1 SERIES
|
@return 0 on success, -1 on failure.
|
||||||
BECOMES STABLE.
|
|
||||||
|
|
||||||
@return 0 on succes, -1 on failure.
|
|
||||||
*/
|
*/
|
||||||
/**@{*/
|
/**@{*/
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
|
|
@ -1199,7 +1202,7 @@ int event_free_finalize(unsigned, struct event *, event_finalize_callback_fn);
|
||||||
@param arg an argument to be passed to the callback function
|
@param arg an argument to be passed to the callback function
|
||||||
@param timeout the maximum amount of time to wait for the event. NULL
|
@param timeout the maximum amount of time to wait for the event. NULL
|
||||||
makes an EV_READ/EV_WRITE event make forever; NULL makes an
|
makes an EV_READ/EV_WRITE event make forever; NULL makes an
|
||||||
EV_TIMEOUT event succees immediately.
|
EV_TIMEOUT event success immediately.
|
||||||
@return 0 if successful, or -1 if an error occurred
|
@return 0 if successful, or -1 if an error occurred
|
||||||
*/
|
*/
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
|
|
@ -1210,7 +1213,7 @@ int event_base_once(struct event_base *, evutil_socket_t, short, event_callback_
|
||||||
|
|
||||||
The function event_add() schedules the execution of the event 'ev' when the
|
The function event_add() schedules the execution of the event 'ev' when the
|
||||||
condition specified by event_assign() or event_new() occurs, or when the time
|
condition specified by event_assign() or event_new() occurs, or when the time
|
||||||
specified in timeout has elapesed. If atimeout is NULL, no timeout
|
specified in timeout has elapsed. If a timeout is NULL, no timeout
|
||||||
occurs and the function will only be
|
occurs and the function will only be
|
||||||
called if a matching event occurs. The event in the
|
called if a matching event occurs. The event in the
|
||||||
ev argument must be already initialized by event_assign() or event_new()
|
ev argument must be already initialized by event_assign() or event_new()
|
||||||
|
|
@ -1236,7 +1239,7 @@ int event_add(struct event *ev, const struct timeval *timeout);
|
||||||
leaves the event otherwise pending.
|
leaves the event otherwise pending.
|
||||||
|
|
||||||
@param ev an event struct initialized via event_assign() or event_new()
|
@param ev an event struct initialized via event_assign() or event_new()
|
||||||
@return 0 on success, or -1 if an error occurrect.
|
@return 0 on success, or -1 if an error occurred.
|
||||||
*/
|
*/
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
int event_remove_timer(struct event *ev);
|
int event_remove_timer(struct event *ev);
|
||||||
|
|
@ -1259,9 +1262,6 @@ int event_del(struct event *);
|
||||||
As event_del(), but never blocks while the event's callback is running
|
As event_del(), but never blocks while the event's callback is running
|
||||||
in another thread, even if the event was constructed without the
|
in another thread, even if the event was constructed without the
|
||||||
EV_FINALIZE flag.
|
EV_FINALIZE flag.
|
||||||
|
|
||||||
THIS IS AN EXPERIMENTAL API. IT MIGHT CHANGE BEFORE THE LIBEVENT 2.1 SERIES
|
|
||||||
BECOMES STABLE.
|
|
||||||
*/
|
*/
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
int event_del_noblock(struct event *ev);
|
int event_del_noblock(struct event *ev);
|
||||||
|
|
@ -1269,9 +1269,6 @@ int event_del_noblock(struct event *ev);
|
||||||
As event_del(), but always blocks while the event's callback is running
|
As event_del(), but always blocks while the event's callback is running
|
||||||
in another thread, even if the event was constructed with the
|
in another thread, even if the event was constructed with the
|
||||||
EV_FINALIZE flag.
|
EV_FINALIZE flag.
|
||||||
|
|
||||||
THIS IS AN EXPERIMENTAL API. IT MIGHT CHANGE BEFORE THE LIBEVENT 2.1 SERIES
|
|
||||||
BECOMES STABLE.
|
|
||||||
*/
|
*/
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
int event_del_block(struct event *ev);
|
int event_del_block(struct event *ev);
|
||||||
|
|
@ -1324,7 +1321,7 @@ struct event *event_base_get_running_event(struct event_base *base);
|
||||||
The event_initialized() function can be used to check if an event has been
|
The event_initialized() function can be used to check if an event has been
|
||||||
initialized.
|
initialized.
|
||||||
|
|
||||||
Warning: This function is only useful for distinguishing a a zeroed-out
|
Warning: This function is only useful for distinguishing a zeroed-out
|
||||||
piece of memory from an initialized event, it can easily be confused by
|
piece of memory from an initialized event, it can easily be confused by
|
||||||
uninitialized memory. Thus, it should ONLY be used to distinguish an
|
uninitialized memory. Thus, it should ONLY be used to distinguish an
|
||||||
initialized event from zero.
|
initialized event from zero.
|
||||||
|
|
@ -1531,7 +1528,7 @@ const struct timeval *event_base_init_common_timeout(struct event_base *base,
|
||||||
|
|
||||||
Note also that if you are going to call this function, you should do so
|
Note also that if you are going to call this function, you should do so
|
||||||
before any call to any Libevent function that does allocation.
|
before any call to any Libevent function that does allocation.
|
||||||
Otherwise, those funtions will allocate their memory using malloc(), but
|
Otherwise, those functions will allocate their memory using malloc(), but
|
||||||
then later free it using your provided free_fn.
|
then later free it using your provided free_fn.
|
||||||
|
|
||||||
@param malloc_fn A replacement for malloc.
|
@param malloc_fn A replacement for malloc.
|
||||||
|
|
@ -1570,7 +1567,7 @@ void event_base_dump_events(struct event_base *, FILE *);
|
||||||
|
|
||||||
@param base the event_base on which to activate the events.
|
@param base the event_base on which to activate the events.
|
||||||
@param fd An fd to active events on.
|
@param fd An fd to active events on.
|
||||||
@param events One or more of EV_{READ,WRITE}.
|
@param events One or more of EV_{READ,WRITE,TIMEOUT}.
|
||||||
*/
|
*/
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
void event_base_active_by_fd(struct event_base *base, evutil_socket_t fd, short events);
|
void event_base_active_by_fd(struct event_base *base, evutil_socket_t fd, short events);
|
||||||
|
|
@ -1627,7 +1624,7 @@ int event_base_foreach_event(struct event_base *base, event_base_foreach_event_c
|
||||||
cached time.
|
cached time.
|
||||||
|
|
||||||
Generally, this value will only be cached while actually
|
Generally, this value will only be cached while actually
|
||||||
processing event callbacks, and may be very inaccuate if your
|
processing event callbacks, and may be very inaccurate if your
|
||||||
callbacks take a long time to execute.
|
callbacks take a long time to execute.
|
||||||
|
|
||||||
Returns 0 on success, negative on failure.
|
Returns 0 on success, negative on failure.
|
||||||
|
|
|
||||||
|
|
@ -78,7 +78,8 @@ struct evdns_base;
|
||||||
* Create a new HTTP server.
|
* Create a new HTTP server.
|
||||||
*
|
*
|
||||||
* @param base (optional) the event base to receive the HTTP events
|
* @param base (optional) the event base to receive the HTTP events
|
||||||
* @return a pointer to a newly initialized evhttp server structure
|
* @return a pointer to a newly initialized evhttp server structure or NULL
|
||||||
|
* on error
|
||||||
* @see evhttp_free()
|
* @see evhttp_free()
|
||||||
*/
|
*/
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
|
|
@ -516,7 +517,8 @@ enum evhttp_request_kind { EVHTTP_REQUEST, EVHTTP_RESPONSE };
|
||||||
* when the connection closes. It must have no fd set on it.
|
* when the connection closes. It must have no fd set on it.
|
||||||
* @param address the address to which to connect
|
* @param address the address to which to connect
|
||||||
* @param port the port to connect to
|
* @param port the port to connect to
|
||||||
* @return an evhttp_connection object that can be used for making requests
|
* @return an evhttp_connection object that can be used for making requests or
|
||||||
|
* NULL on error
|
||||||
*/
|
*/
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
struct evhttp_connection *evhttp_connection_base_bufferevent_new(
|
struct evhttp_connection *evhttp_connection_base_bufferevent_new(
|
||||||
|
|
@ -636,7 +638,8 @@ void evhttp_request_free(struct evhttp_request *req);
|
||||||
* specified host name resolution will block.
|
* specified host name resolution will block.
|
||||||
* @param address the address to which to connect
|
* @param address the address to which to connect
|
||||||
* @param port the port to connect to
|
* @param port the port to connect to
|
||||||
* @return an evhttp_connection object that can be used for making requests
|
* @return an evhttp_connection object that can be used for making requests or
|
||||||
|
* NULL on error
|
||||||
*/
|
*/
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
struct evhttp_connection *evhttp_connection_base_new(
|
struct evhttp_connection *evhttp_connection_base_new(
|
||||||
|
|
@ -927,14 +930,14 @@ char *evhttp_uriencode(const char *str, ev_ssize_t size, int space_to_plus);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Helper function to sort of decode a URI-encoded string. Unlike
|
Helper function to sort of decode a URI-encoded string. Unlike
|
||||||
evhttp_get_decoded_uri, it decodes all plus characters that appear
|
evhttp_uridecode, it decodes all plus characters that appear
|
||||||
_after_ the first question mark character, but no plusses that occur
|
_after_ the first question mark character, but no plusses that occur
|
||||||
before. This is not a good way to decode URIs in whole or in part.
|
before. This is not a good way to decode URIs in whole or in part.
|
||||||
|
|
||||||
The returned string must be freed by the caller
|
The returned string must be freed by the caller
|
||||||
|
|
||||||
@deprecated This function is deprecated; you probably want to use
|
@deprecated This function is deprecated; you probably want to use
|
||||||
evhttp_get_decoded_uri instead.
|
evhttp_uridecode instead.
|
||||||
|
|
||||||
@param uri an encoded URI
|
@param uri an encoded URI
|
||||||
@return a newly allocated unencoded URI or NULL on failure
|
@return a newly allocated unencoded URI or NULL on failure
|
||||||
|
|
|
||||||
|
|
@ -56,8 +56,10 @@ extern "C" {
|
||||||
*
|
*
|
||||||
* @param address the address to which the HTTP server should be bound
|
* @param address the address to which the HTTP server should be bound
|
||||||
* @param port the port number on which the HTTP server should listen
|
* @param port the port number on which the HTTP server should listen
|
||||||
* @return an struct evhttp object
|
* @return a pointer to a newly initialized evhttp server structure
|
||||||
|
* or NULL on error
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
struct evhttp *evhttp_start(const char *address, ev_uint16_t port);
|
struct evhttp *evhttp_start(const char *address, ev_uint16_t port);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -67,6 +69,7 @@ struct evhttp *evhttp_start(const char *address, ev_uint16_t port);
|
||||||
*
|
*
|
||||||
* @deprecated It does not allow an event base to be specified
|
* @deprecated It does not allow an event base to be specified
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
struct evhttp_connection *evhttp_connection_new(
|
struct evhttp_connection *evhttp_connection_new(
|
||||||
const char *address, ev_uint16_t port);
|
const char *address, ev_uint16_t port);
|
||||||
|
|
||||||
|
|
@ -76,6 +79,7 @@ struct evhttp_connection *evhttp_connection_new(
|
||||||
*
|
*
|
||||||
* @deprecated XXXX Why?
|
* @deprecated XXXX Why?
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
void evhttp_connection_set_base(struct evhttp_connection *evcon,
|
void evhttp_connection_set_base(struct evhttp_connection *evcon,
|
||||||
struct event_base *base);
|
struct event_base *base);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -97,6 +97,18 @@ typedef void (*evconnlistener_errorcb)(struct evconnlistener *, void *);
|
||||||
* This is only available on Linux and kernel 3.9+
|
* This is only available on Linux and kernel 3.9+
|
||||||
*/
|
*/
|
||||||
#define LEV_OPT_REUSEABLE_PORT (1u<<7)
|
#define LEV_OPT_REUSEABLE_PORT (1u<<7)
|
||||||
|
/** Flag: Indicates that the listener wants to work only in IPv6 socket.
|
||||||
|
*
|
||||||
|
* According to RFC3493 and most Linux distributions, default value is to
|
||||||
|
* work in IPv4-mapped mode. If there is a requirement to bind same port
|
||||||
|
* on same ip addresses but different handlers for both IPv4 and IPv6,
|
||||||
|
* it is required to set IPV6_V6ONLY socket option to be sure that the
|
||||||
|
* code works as expected without affected by bindv6only sysctl setting in
|
||||||
|
* system.
|
||||||
|
*
|
||||||
|
* This socket option also supported by Windows.
|
||||||
|
*/
|
||||||
|
#define LEV_OPT_BIND_IPV6ONLY (1u<<8)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Allocate a new evconnlistener object to listen for incoming TCP connections
|
Allocate a new evconnlistener object to listen for incoming TCP connections
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,10 @@
|
||||||
#ifndef EVENT2_RPC_H_INCLUDED_
|
#ifndef EVENT2_RPC_H_INCLUDED_
|
||||||
#define EVENT2_RPC_H_INCLUDED_
|
#define EVENT2_RPC_H_INCLUDED_
|
||||||
|
|
||||||
|
/* For int types. */
|
||||||
|
#include <event2/util.h>
|
||||||
|
#include <event2/visibility.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -178,6 +182,7 @@ EVRPC_STRUCT(rpcname) { \
|
||||||
struct evhttp_request* http_req; \
|
struct evhttp_request* http_req; \
|
||||||
struct evbuffer* rpc_data; \
|
struct evbuffer* rpc_data; \
|
||||||
}; \
|
}; \
|
||||||
|
EVENT2_EXPORT_SYMBOL \
|
||||||
int evrpc_send_request_##rpcname(struct evrpc_pool *, \
|
int evrpc_send_request_##rpcname(struct evrpc_pool *, \
|
||||||
struct reqstruct *, struct rplystruct *, \
|
struct reqstruct *, struct rplystruct *, \
|
||||||
void (*)(struct evrpc_status *, \
|
void (*)(struct evrpc_status *, \
|
||||||
|
|
@ -187,6 +192,7 @@ int evrpc_send_request_##rpcname(struct evrpc_pool *, \
|
||||||
struct evrpc_pool;
|
struct evrpc_pool;
|
||||||
|
|
||||||
/** use EVRPC_GENERATE instead */
|
/** use EVRPC_GENERATE instead */
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
struct evrpc_request_wrapper *evrpc_make_request_ctx(
|
struct evrpc_request_wrapper *evrpc_make_request_ctx(
|
||||||
struct evrpc_pool *pool, void *request, void *reply,
|
struct evrpc_pool *pool, void *request, void *reply,
|
||||||
const char *rpcname,
|
const char *rpcname,
|
||||||
|
|
@ -257,10 +263,13 @@ struct evrpc_request_wrapper *evrpc_make_request_ctx(
|
||||||
#define EVRPC_REQUEST_HTTP(rpc_req) (rpc_req)->http_req
|
#define EVRPC_REQUEST_HTTP(rpc_req) (rpc_req)->http_req
|
||||||
|
|
||||||
/** completes the server response to an rpc request */
|
/** completes the server response to an rpc request */
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
void evrpc_request_done(struct evrpc_req_generic *req);
|
void evrpc_request_done(struct evrpc_req_generic *req);
|
||||||
|
|
||||||
/** accessors for request and reply */
|
/** accessors for request and reply */
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
void *evrpc_get_request(struct evrpc_req_generic *req);
|
void *evrpc_get_request(struct evrpc_req_generic *req);
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
void *evrpc_get_reply(struct evrpc_req_generic *req);
|
void *evrpc_get_reply(struct evrpc_req_generic *req);
|
||||||
|
|
||||||
/** Creates the reply to an RPC request
|
/** Creates the reply to an RPC request
|
||||||
|
|
@ -285,9 +294,10 @@ struct evhttp;
|
||||||
/** Creates a new rpc base from which RPC requests can be received
|
/** Creates a new rpc base from which RPC requests can be received
|
||||||
*
|
*
|
||||||
* @param server a pointer to an existing HTTP server
|
* @param server a pointer to an existing HTTP server
|
||||||
* @return a newly allocated evrpc_base struct
|
* @return a newly allocated evrpc_base struct or NULL if an error occurred
|
||||||
* @see evrpc_free()
|
* @see evrpc_free()
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
struct evrpc_base *evrpc_init(struct evhttp *server);
|
struct evrpc_base *evrpc_init(struct evhttp *server);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -298,6 +308,7 @@ struct evrpc_base *evrpc_init(struct evhttp *server);
|
||||||
* @param base the evrpc_base object to be freed
|
* @param base the evrpc_base object to be freed
|
||||||
* @see evrpc_init
|
* @see evrpc_init
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
void evrpc_free(struct evrpc_base *base);
|
void evrpc_free(struct evrpc_base *base);
|
||||||
|
|
||||||
/** register RPCs with the HTTP Server
|
/** register RPCs with the HTTP Server
|
||||||
|
|
@ -319,10 +330,10 @@ void evrpc_free(struct evrpc_base *base);
|
||||||
#define EVRPC_REGISTER(base, name, request, reply, callback, cbarg) \
|
#define EVRPC_REGISTER(base, name, request, reply, callback, cbarg) \
|
||||||
evrpc_register_generic(base, #name, \
|
evrpc_register_generic(base, #name, \
|
||||||
(void (*)(struct evrpc_req_generic *, void *))callback, cbarg, \
|
(void (*)(struct evrpc_req_generic *, void *))callback, cbarg, \
|
||||||
(void *(*)(void *))request##_new, NULL, \
|
(void *(*)(void *))request##_new_with_arg, NULL, \
|
||||||
(void (*)(void *))request##_free, \
|
(void (*)(void *))request##_free, \
|
||||||
(int (*)(void *, struct evbuffer *))request##_unmarshal, \
|
(int (*)(void *, struct evbuffer *))request##_unmarshal, \
|
||||||
(void *(*)(void *))reply##_new, NULL, \
|
(void *(*)(void *))reply##_new_with_arg, NULL, \
|
||||||
(void (*)(void *))reply##_free, \
|
(void (*)(void *))reply##_free, \
|
||||||
(int (*)(void *))reply##_complete, \
|
(int (*)(void *))reply##_complete, \
|
||||||
(void (*)(struct evbuffer *, void *))reply##_marshal)
|
(void (*)(struct evbuffer *, void *))reply##_marshal)
|
||||||
|
|
@ -334,6 +345,7 @@ void evrpc_free(struct evrpc_base *base);
|
||||||
|
|
||||||
@see EVRPC_REGISTER()
|
@see EVRPC_REGISTER()
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evrpc_register_rpc(struct evrpc_base *, struct evrpc *,
|
int evrpc_register_rpc(struct evrpc_base *, struct evrpc *,
|
||||||
void (*)(struct evrpc_req_generic*, void *), void *);
|
void (*)(struct evrpc_req_generic*, void *), void *);
|
||||||
|
|
||||||
|
|
@ -347,6 +359,7 @@ int evrpc_register_rpc(struct evrpc_base *, struct evrpc *,
|
||||||
*/
|
*/
|
||||||
#define EVRPC_UNREGISTER(base, name) evrpc_unregister_rpc((base), #name)
|
#define EVRPC_UNREGISTER(base, name) evrpc_unregister_rpc((base), #name)
|
||||||
|
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evrpc_unregister_rpc(struct evrpc_base *base, const char *name);
|
int evrpc_unregister_rpc(struct evrpc_base *base, const char *name);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -385,6 +398,7 @@ struct evrpc_status;
|
||||||
@returns 0 on success, -1 otherwise.
|
@returns 0 on success, -1 otherwise.
|
||||||
@see EVRPC_MAKE_REQUEST(), EVRPC_MAKE_CTX()
|
@see EVRPC_MAKE_REQUEST(), EVRPC_MAKE_CTX()
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evrpc_make_request(struct evrpc_request_wrapper *ctx);
|
int evrpc_make_request(struct evrpc_request_wrapper *ctx);
|
||||||
|
|
||||||
/** creates an rpc connection pool
|
/** creates an rpc connection pool
|
||||||
|
|
@ -394,15 +408,18 @@ int evrpc_make_request(struct evrpc_request_wrapper *ctx);
|
||||||
*
|
*
|
||||||
* @param base a pointer to an struct event_based object; can be left NULL
|
* @param base a pointer to an struct event_based object; can be left NULL
|
||||||
* in singled-threaded applications
|
* in singled-threaded applications
|
||||||
* @return a newly allocated struct evrpc_pool object
|
* @return a newly allocated struct evrpc_pool object or NULL if an error
|
||||||
|
* occurred
|
||||||
* @see evrpc_pool_free()
|
* @see evrpc_pool_free()
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
struct evrpc_pool *evrpc_pool_new(struct event_base *base);
|
struct evrpc_pool *evrpc_pool_new(struct event_base *base);
|
||||||
/** frees an rpc connection pool
|
/** frees an rpc connection pool
|
||||||
*
|
*
|
||||||
* @param pool a pointer to an evrpc_pool allocated via evrpc_pool_new()
|
* @param pool a pointer to an evrpc_pool allocated via evrpc_pool_new()
|
||||||
* @see evrpc_pool_new()
|
* @see evrpc_pool_new()
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
void evrpc_pool_free(struct evrpc_pool *pool);
|
void evrpc_pool_free(struct evrpc_pool *pool);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -413,6 +430,7 @@ void evrpc_pool_free(struct evrpc_pool *pool);
|
||||||
* @param pool the pool to which to add the connection
|
* @param pool the pool to which to add the connection
|
||||||
* @param evcon the connection to add to the pool.
|
* @param evcon the connection to add to the pool.
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
void evrpc_pool_add_connection(struct evrpc_pool *pool,
|
void evrpc_pool_add_connection(struct evrpc_pool *pool,
|
||||||
struct evhttp_connection *evcon);
|
struct evhttp_connection *evcon);
|
||||||
|
|
||||||
|
|
@ -424,6 +442,7 @@ void evrpc_pool_add_connection(struct evrpc_pool *pool,
|
||||||
* @param pool the pool from which to remove the connection
|
* @param pool the pool from which to remove the connection
|
||||||
* @param evcon the connection to remove from the pool.
|
* @param evcon the connection to remove from the pool.
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
void evrpc_pool_remove_connection(struct evrpc_pool *pool,
|
void evrpc_pool_remove_connection(struct evrpc_pool *pool,
|
||||||
struct evhttp_connection *evcon);
|
struct evhttp_connection *evcon);
|
||||||
|
|
||||||
|
|
@ -442,6 +461,7 @@ void evrpc_pool_remove_connection(struct evrpc_pool *pool,
|
||||||
* @param timeout_in_secs the number of seconds after which a request should
|
* @param timeout_in_secs the number of seconds after which a request should
|
||||||
* timeout and a failure be returned to the callback.
|
* timeout and a failure be returned to the callback.
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
void evrpc_pool_set_timeout(struct evrpc_pool *pool, int timeout_in_secs);
|
void evrpc_pool_set_timeout(struct evrpc_pool *pool, int timeout_in_secs);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -489,6 +509,7 @@ enum EVRPC_HOOK_RESULT {
|
||||||
* @return a handle to the hook so it can be removed later
|
* @return a handle to the hook so it can be removed later
|
||||||
* @see evrpc_remove_hook()
|
* @see evrpc_remove_hook()
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
void *evrpc_add_hook(void *vbase,
|
void *evrpc_add_hook(void *vbase,
|
||||||
enum EVRPC_HOOK_TYPE hook_type,
|
enum EVRPC_HOOK_TYPE hook_type,
|
||||||
int (*cb)(void *, struct evhttp_request *, struct evbuffer *, void *),
|
int (*cb)(void *, struct evhttp_request *, struct evbuffer *, void *),
|
||||||
|
|
@ -502,6 +523,7 @@ void *evrpc_add_hook(void *vbase,
|
||||||
* @return 1 on success or 0 on failure
|
* @return 1 on success or 0 on failure
|
||||||
* @see evrpc_add_hook()
|
* @see evrpc_add_hook()
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evrpc_remove_hook(void *vbase,
|
int evrpc_remove_hook(void *vbase,
|
||||||
enum EVRPC_HOOK_TYPE hook_type,
|
enum EVRPC_HOOK_TYPE hook_type,
|
||||||
void *handle);
|
void *handle);
|
||||||
|
|
@ -511,8 +533,8 @@ int evrpc_remove_hook(void *vbase,
|
||||||
* @param vbase a pointer to either struct evrpc_base or struct evrpc_pool
|
* @param vbase a pointer to either struct evrpc_base or struct evrpc_pool
|
||||||
* @param ctx the context pointer provided to the original hook call
|
* @param ctx the context pointer provided to the original hook call
|
||||||
*/
|
*/
|
||||||
int
|
EVENT2_EXPORT_SYMBOL
|
||||||
evrpc_resume_request(void *vbase, void *ctx, enum EVRPC_HOOK_RESULT res);
|
int evrpc_resume_request(void *vbase, void *ctx, enum EVRPC_HOOK_RESULT res);
|
||||||
|
|
||||||
/** adds meta data to request
|
/** adds meta data to request
|
||||||
*
|
*
|
||||||
|
|
@ -525,6 +547,7 @@ evrpc_resume_request(void *vbase, void *ctx, enum EVRPC_HOOK_RESULT res);
|
||||||
* @param data the data to be associated with the key
|
* @param data the data to be associated with the key
|
||||||
* @param data_size the size of the data
|
* @param data_size the size of the data
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
void evrpc_hook_add_meta(void *ctx, const char *key,
|
void evrpc_hook_add_meta(void *ctx, const char *key,
|
||||||
const void *data, size_t data_size);
|
const void *data, size_t data_size);
|
||||||
|
|
||||||
|
|
@ -538,6 +561,7 @@ void evrpc_hook_add_meta(void *ctx, const char *key,
|
||||||
* @param data_size pointer to the size of the data
|
* @param data_size pointer to the size of the data
|
||||||
* @return 0 on success or -1 on failure
|
* @return 0 on success or -1 on failure
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evrpc_hook_find_meta(void *ctx, const char *key,
|
int evrpc_hook_find_meta(void *ctx, const char *key,
|
||||||
void **data, size_t *data_size);
|
void **data, size_t *data_size);
|
||||||
|
|
||||||
|
|
@ -545,8 +569,10 @@ int evrpc_hook_find_meta(void *ctx, const char *key,
|
||||||
* returns the connection object associated with the request
|
* returns the connection object associated with the request
|
||||||
*
|
*
|
||||||
* @param ctx the context provided to the hook call
|
* @param ctx the context provided to the hook call
|
||||||
* @return a pointer to the evhttp_connection object
|
* @return a pointer to the evhttp_connection object or NULL if an error
|
||||||
|
* occurred
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
struct evhttp_connection *evrpc_hook_get_connection(void *ctx);
|
struct evhttp_connection *evrpc_hook_get_connection(void *ctx);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -556,6 +582,7 @@ struct evhttp_connection *evrpc_hook_get_connection(void *ctx);
|
||||||
|
|
||||||
@see EVRPC_MAKE_REQUEST()
|
@see EVRPC_MAKE_REQUEST()
|
||||||
*/
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evrpc_send_request_generic(struct evrpc_pool *pool,
|
int evrpc_send_request_generic(struct evrpc_pool *pool,
|
||||||
void *request, void *reply,
|
void *request, void *reply,
|
||||||
void (*cb)(struct evrpc_status *, void *, void *, void *),
|
void (*cb)(struct evrpc_status *, void *, void *, void *),
|
||||||
|
|
@ -572,8 +599,8 @@ int evrpc_send_request_generic(struct evrpc_pool *pool,
|
||||||
|
|
||||||
@see EVRPC_REGISTER()
|
@see EVRPC_REGISTER()
|
||||||
*/
|
*/
|
||||||
int
|
EVENT2_EXPORT_SYMBOL
|
||||||
evrpc_register_generic(struct evrpc_base *base, const char *name,
|
int evrpc_register_generic(struct evrpc_base *base, const char *name,
|
||||||
void (*callback)(struct evrpc_req_generic *, void *), void *cbarg,
|
void (*callback)(struct evrpc_req_generic *, void *), void *cbarg,
|
||||||
void *(*req_new)(void *), void *req_new_arg, void (*req_free)(void *),
|
void *(*req_new)(void *), void *req_new_arg, void (*req_free)(void *),
|
||||||
int (*req_unmarshal)(void *, struct evbuffer *),
|
int (*req_unmarshal)(void *, struct evbuffer *),
|
||||||
|
|
@ -582,9 +609,12 @@ evrpc_register_generic(struct evrpc_base *base, const char *name,
|
||||||
void (*rpl_marshal)(struct evbuffer *, void *));
|
void (*rpl_marshal)(struct evbuffer *, void *));
|
||||||
|
|
||||||
/** accessors for obscure and undocumented functionality */
|
/** accessors for obscure and undocumented functionality */
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
struct evrpc_pool* evrpc_request_get_pool(struct evrpc_request_wrapper *ctx);
|
struct evrpc_pool* evrpc_request_get_pool(struct evrpc_request_wrapper *ctx);
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
void evrpc_request_set_pool(struct evrpc_request_wrapper *ctx,
|
void evrpc_request_set_pool(struct evrpc_request_wrapper *ctx,
|
||||||
struct evrpc_pool *pool);
|
struct evrpc_pool *pool);
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
void evrpc_request_set_cb(struct evrpc_request_wrapper *ctx,
|
void evrpc_request_set_cb(struct evrpc_request_wrapper *ctx,
|
||||||
void (*cb)(struct evrpc_status*, void *request, void *reply, void *arg),
|
void (*cb)(struct evrpc_status*, void *request, void *reply, void *arg),
|
||||||
void *cb_arg);
|
void *cb_arg);
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,16 @@ extern "C" {
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* Fix so that people don't have to run with <sys/queue.h> */
|
||||||
|
#ifndef TAILQ_ENTRY
|
||||||
|
#define EVENT_DEFINED_TQENTRY_
|
||||||
|
#define TAILQ_ENTRY(type) \
|
||||||
|
struct { \
|
||||||
|
struct type *tqe_next; /* next element */ \
|
||||||
|
struct type **tqe_prev; /* address of previous next element */ \
|
||||||
|
}
|
||||||
|
#endif /* !TAILQ_ENTRY */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* provides information about the completed RPC request.
|
* provides information about the completed RPC request.
|
||||||
*/
|
*/
|
||||||
|
|
@ -93,6 +103,10 @@ struct evrpc {
|
||||||
struct evrpc_base *base;
|
struct evrpc_base *base;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef EVENT_DEFINED_TQENTRY_
|
||||||
|
#undef TAILQ_ENTRY
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -58,9 +58,6 @@ extern "C" {
|
||||||
#endif
|
#endif
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#ifdef EVENT__HAVE_NETDB_H
|
#ifdef EVENT__HAVE_NETDB_H
|
||||||
#if !defined(_GNU_SOURCE)
|
|
||||||
#define _GNU_SOURCE
|
|
||||||
#endif
|
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -259,6 +256,7 @@ extern "C" {
|
||||||
#define EV_INT32_MAX INT32_MAX
|
#define EV_INT32_MAX INT32_MAX
|
||||||
#define EV_INT32_MIN INT32_MIN
|
#define EV_INT32_MIN INT32_MIN
|
||||||
#define EV_UINT16_MAX UINT16_MAX
|
#define EV_UINT16_MAX UINT16_MAX
|
||||||
|
#define EV_INT16_MIN INT16_MIN
|
||||||
#define EV_INT16_MAX INT16_MAX
|
#define EV_INT16_MAX INT16_MAX
|
||||||
#define EV_UINT8_MAX UINT8_MAX
|
#define EV_UINT8_MAX UINT8_MAX
|
||||||
#define EV_INT8_MAX INT8_MAX
|
#define EV_INT8_MAX INT8_MAX
|
||||||
|
|
@ -425,6 +423,18 @@ int evutil_make_listen_socket_reuseable(evutil_socket_t sock);
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evutil_make_listen_socket_reuseable_port(evutil_socket_t sock);
|
int evutil_make_listen_socket_reuseable_port(evutil_socket_t sock);
|
||||||
|
|
||||||
|
/** Set ipv6 only bind socket option to make listener work only in ipv6 sockets.
|
||||||
|
|
||||||
|
According to RFC3493 and most Linux distributions, default value for the
|
||||||
|
sockets is to work in IPv4-mapped mode. In IPv4-mapped mode, it is not possible
|
||||||
|
to bind same port from different IPv4 and IPv6 handlers.
|
||||||
|
|
||||||
|
@param sock The socket to make in ipv6only working mode
|
||||||
|
@return 0 on success, -1 on failure
|
||||||
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
|
int evutil_make_listen_socket_ipv6only(evutil_socket_t sock);
|
||||||
|
|
||||||
/** Do platform-specific operations as needed to close a socket upon a
|
/** Do platform-specific operations as needed to close a socket upon a
|
||||||
successful execution of one of the exec*() functions.
|
successful execution of one of the exec*() functions.
|
||||||
|
|
||||||
|
|
@ -438,7 +448,8 @@ int evutil_make_socket_closeonexec(evutil_socket_t sock);
|
||||||
socket() or accept().
|
socket() or accept().
|
||||||
|
|
||||||
@param sock The socket to be closed
|
@param sock The socket to be closed
|
||||||
@return 0 on success, -1 on failure
|
@return 0 on success (whether the operation is supported or not),
|
||||||
|
-1 on failure
|
||||||
*/
|
*/
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evutil_closesocket(evutil_socket_t sock);
|
int evutil_closesocket(evutil_socket_t sock);
|
||||||
|
|
@ -470,6 +481,7 @@ int evutil_socket_geterror(evutil_socket_t sock);
|
||||||
/** Convert a socket error to a string. */
|
/** Convert a socket error to a string. */
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
const char *evutil_socket_error_to_string(int errcode);
|
const char *evutil_socket_error_to_string(int errcode);
|
||||||
|
#define EVUTIL_INVALID_SOCKET INVALID_SOCKET
|
||||||
#elif defined(EVENT_IN_DOXYGEN_)
|
#elif defined(EVENT_IN_DOXYGEN_)
|
||||||
/**
|
/**
|
||||||
@name Socket error functions
|
@name Socket error functions
|
||||||
|
|
@ -493,14 +505,16 @@ const char *evutil_socket_error_to_string(int errcode);
|
||||||
#define evutil_socket_geterror(sock) ...
|
#define evutil_socket_geterror(sock) ...
|
||||||
/** Convert a socket error to a string. */
|
/** Convert a socket error to a string. */
|
||||||
#define evutil_socket_error_to_string(errcode) ...
|
#define evutil_socket_error_to_string(errcode) ...
|
||||||
|
#define EVUTIL_INVALID_SOCKET -1
|
||||||
/**@}*/
|
/**@}*/
|
||||||
#else
|
#else /** !EVENT_IN_DOXYGEN_ && !_WIN32 */
|
||||||
#define EVUTIL_SOCKET_ERROR() (errno)
|
#define EVUTIL_SOCKET_ERROR() (errno)
|
||||||
#define EVUTIL_SET_SOCKET_ERROR(errcode) \
|
#define EVUTIL_SET_SOCKET_ERROR(errcode) \
|
||||||
do { errno = (errcode); } while (0)
|
do { errno = (errcode); } while (0)
|
||||||
#define evutil_socket_geterror(sock) (errno)
|
#define evutil_socket_geterror(sock) (errno)
|
||||||
#define evutil_socket_error_to_string(errcode) (strerror(errcode))
|
#define evutil_socket_error_to_string(errcode) (strerror(errcode))
|
||||||
#endif
|
#define EVUTIL_INVALID_SOCKET -1
|
||||||
|
#endif /** !_WIN32 */
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -842,6 +856,7 @@ int evutil_secure_rng_init(void);
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evutil_secure_rng_set_urandom_device_file(char *fname);
|
int evutil_secure_rng_set_urandom_device_file(char *fname);
|
||||||
|
|
||||||
|
#if !defined(EVENT__HAVE_ARC4RANDOM) || defined(EVENT__HAVE_ARC4RANDOM_ADDRANDOM)
|
||||||
/** Seed the random number generator with extra random bytes.
|
/** Seed the random number generator with extra random bytes.
|
||||||
|
|
||||||
You should almost never need to call this function; it should be
|
You should almost never need to call this function; it should be
|
||||||
|
|
@ -858,6 +873,7 @@ int evutil_secure_rng_set_urandom_device_file(char *fname);
|
||||||
*/
|
*/
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
void evutil_secure_rng_add_bytes(const char *dat, size_t datlen);
|
void evutil_secure_rng_add_bytes(const char *dat, size_t datlen);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,22 +29,39 @@
|
||||||
|
|
||||||
#include <event2/event-config.h>
|
#include <event2/event-config.h>
|
||||||
|
|
||||||
#if defined(event_EXPORTS) || defined(event_extra_EXPORTS) || defined(event_core_EXPORTS)
|
#if defined(event_shared_EXPORTS) || \
|
||||||
|
defined(event_extra_shared_EXPORTS) || \
|
||||||
|
defined(event_core_shared_EXPORTS) || \
|
||||||
|
defined(event_pthreads_shared_EXPORTS) || \
|
||||||
|
defined(event_openssl_shared_EXPORTS)
|
||||||
|
|
||||||
# if defined (__SUNPRO_C) && (__SUNPRO_C >= 0x550)
|
# if defined (__SUNPRO_C) && (__SUNPRO_C >= 0x550)
|
||||||
# define EVENT2_EXPORT_SYMBOL __global
|
# define EVENT2_EXPORT_SYMBOL __global
|
||||||
# elif defined __GNUC__
|
# elif defined __GNUC__
|
||||||
# define EVENT2_EXPORT_SYMBOL __attribute__ ((visibility("default")))
|
# define EVENT2_EXPORT_SYMBOL __attribute__ ((visibility("default")))
|
||||||
# elif defined(_MSC_VER)
|
# elif defined(_MSC_VER)
|
||||||
# define EVENT2_EXPORT_SYMBOL extern __declspec(dllexport)
|
# define EVENT2_EXPORT_SYMBOL __declspec(dllexport)
|
||||||
# else
|
# else
|
||||||
# define EVENT2_EXPORT_SYMBOL /* unknown compiler */
|
# define EVENT2_EXPORT_SYMBOL /* unknown compiler */
|
||||||
# endif
|
# endif
|
||||||
#else
|
|
||||||
# if defined(EVENT__NEED_DLLIMPORT) && defined(_MSC_VER) && !defined(EVENT_BUILDING_REGRESS_TEST)
|
#else /* event_*_EXPORTS */
|
||||||
# define EVENT2_EXPORT_SYMBOL extern __declspec(dllimport)
|
|
||||||
# else
|
# define EVENT2_EXPORT_SYMBOL
|
||||||
# define EVENT2_EXPORT_SYMBOL
|
|
||||||
|
#endif /* event_*_EXPORTS */
|
||||||
|
|
||||||
|
/** We need to dllimport event_debug_logging_mask_ into event_extra */
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
# if defined(event_core_shared_EXPORTS) /** from core export */
|
||||||
|
# define EVENT2_CORE_EXPORT_SYMBOL __declspec(dllexport)
|
||||||
|
# elif defined(event_extra_shared_EXPORTS) || /** from extra import */ \
|
||||||
|
defined(EVENT_VISIBILITY_WANT_DLLIMPORT)
|
||||||
|
# define EVENT2_CORE_EXPORT_SYMBOL __declspec(dllimport)
|
||||||
# endif
|
# endif
|
||||||
|
#endif /* _MSC_VER */
|
||||||
|
#if !defined(EVENT2_CORE_EXPORT_SYMBOL)
|
||||||
|
# define EVENT2_CORE_EXPORT_SYMBOL EVENT2_EXPORT_SYMBOL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* EVENT2_VISIBILITY_H_INCLUDED_ */
|
#endif /* EVENT2_VISIBILITY_H_INCLUDED_ */
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
/home/anand/works/sevana/temp/libevent-2.1.11-stable/build/lib/libevent.a
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
/home/anand/works/sevana/temp/libevent-2.1.11-stable/build/lib/libevent_core.a
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
/home/anand/works/sevana/temp/libevent-2.1.11-stable/build/lib/libevent_extra.a
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
/home/anand/works/sevana/temp/libevent-2.1.11-stable/build/lib/libevent_openssl.a
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
/home/anand/works/sevana/temp/libevent-2.1.11-stable/build/lib/libevent_pthreads.a
|
||||||
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue