27 #ifndef EVENT2_BUFFEREVENT_H_INCLUDED_
28 #define EVENT2_BUFFEREVENT_H_INCLUDED_
77 #include <event2/visibility.h>
83 #include <event2/event-config.h>
84 #ifdef EVENT__HAVE_SYS_TYPES_H
85 #include <sys/types.h>
87 #ifdef EVENT__HAVE_SYS_TIME_H
100 #define BEV_EVENT_READING 0x01
101 #define BEV_EVENT_WRITING 0x02
102 #define BEV_EVENT_EOF 0x10
103 #define BEV_EVENT_ERROR 0x20
104 #define BEV_EVENT_TIMEOUT 0x40
105 #define BEV_EVENT_CONNECTED 0x80
114 #ifdef EVENT_IN_DOXYGEN_
387 const void *data,
size_t size);
513 const struct timeval *timeout_read,
const struct timeval *timeout_write);
538 size_t lowmark,
size_t highmark);
552 size_t *lowmark,
size_t *highmark);
726 void (*free_context)(
void *),
764 #define EV_RATE_LIMIT_MAX EV_SSIZE_MAX
786 const struct timeval *tick_len);
927 ev_ssize_t bufferevent_get_read_limit(
struct bufferevent *bev);
929 ev_ssize_t bufferevent_get_write_limit(
struct bufferevent *bev);
933 ev_ssize_t bufferevent_get_max_to_read(
struct bufferevent *bev);
935 ev_ssize_t bufferevent_get_max_to_write(
struct bufferevent *bev);
950 ev_ssize_t bufferevent_rate_limit_group_get_read_limit(
953 ev_ssize_t bufferevent_rate_limit_group_get_write_limit(
972 int bufferevent_decrement_read_limit(
struct bufferevent *bev, ev_ssize_t decr);
974 int bufferevent_decrement_write_limit(
struct bufferevent *bev, ev_ssize_t decr);
991 int bufferevent_rate_limit_group_decrement_read(
994 int bufferevent_rate_limit_group_decrement_write(
1005 EVENT2_EXPORT_SYMBOL
1008 ev_uint64_t *total_read_out, ev_uint64_t *total_written_out);
1015 EVENT2_EXPORT_SYMBOL
EVENT2_EXPORT_SYMBOL int bufferevent_get_priority(const struct bufferevent *bufev)
Definition: bufferevent.c:442
EVENT2_EXPORT_SYMBOL void bufferevent_setcb(struct bufferevent *bufev, bufferevent_data_cb readcb, bufferevent_data_cb writecb, bufferevent_event_cb eventcb, void *cbarg)
Definition: bufferevent.c:389
EVENT2_EXPORT_SYMBOL void bufferevent_rate_limit_group_reset_totals(struct bufferevent_rate_limit_group *grp)
Definition: bufferevent_ratelim.c:1076
EVENT2_EXPORT_SYMBOL struct event_base * bufferevent_get_base(struct bufferevent *bev)
Definition: bufferevent.c:436
bufferevent_filter_result
Definition: bufferevent.h:669
@ BEV_ERROR
Definition: bufferevent.h:678
@ BEV_NEED_MORE
Definition: bufferevent.h:674
@ BEV_OK
Definition: bufferevent.h:671
EVENT2_EXPORT_SYMBOL void bufferevent_unlock(struct bufferevent *bufev)
Definition: bufferevent.c:1033
EVENT2_EXPORT_SYMBOL int bufferevent_rate_limit_group_set_cfg(struct bufferevent_rate_limit_group *, const struct ev_token_bucket_cfg *)
Definition: bufferevent_ratelim.c:672
EVENT2_EXPORT_SYMBOL void bufferevent_incref(struct bufferevent *bufev)
Definition: bufferevent.c:815
EVENT2_EXPORT_SYMBOL int bufferevent_priority_set(struct bufferevent *bufev, int pri)
Definition: bufferevent_sock.c:647
EVENT2_EXPORT_SYMBOL struct ev_token_bucket_cfg * ev_token_bucket_cfg_new(size_t read_rate, size_t read_burst, size_t write_rate, size_t write_burst, const struct timeval *tick_len)
Definition: bufferevent_ratelim.c:143
EVENT2_EXPORT_SYMBOL ev_ssize_t bufferevent_get_max_single_read(struct bufferevent *bev)
Definition: bufferevent_ratelim.c:883
EVENT2_EXPORT_SYMBOL struct bufferevent * bufferevent_pair_get_partner(struct bufferevent *bev)
Definition: bufferevent_pair.c:340
EVENT2_EXPORT_SYMBOL int bufferevent_decref(struct bufferevent *bufev)
Definition: bufferevent.c:799
EVENT2_EXPORT_SYMBOL int bufferevent_remove_from_rate_limit_group(struct bufferevent *bev)
Definition: bufferevent_ratelim.c:781
EVENT2_EXPORT_SYMBOL struct bufferevent * bufferevent_filter_new(struct bufferevent *underlying, bufferevent_filter_cb input_filter, bufferevent_filter_cb output_filter, int options, void(*free_context)(void *), void *ctx)
Definition: bufferevent_filter.c:170
void(* bufferevent_event_cb)(struct bufferevent *bev, short what, void *ctx)
Definition: bufferevent.h:150
EVENT2_EXPORT_SYMBOL struct evbuffer * bufferevent_get_input(struct bufferevent *bufev)
Definition: bufferevent.c:424
EVENT2_EXPORT_SYMBOL struct bufferevent * bufferevent_get_underlying(struct bufferevent *bufev)
Definition: bufferevent.c:929
EVENT2_EXPORT_SYMBOL int bufferevent_rate_limit_group_set_min_share(struct bufferevent_rate_limit_group *, size_t)
Definition: bufferevent_ratelim.c:703
EVENT2_EXPORT_SYMBOL int bufferevent_add_to_rate_limit_group(struct bufferevent *bev, struct bufferevent_rate_limit_group *g)
Definition: bufferevent_ratelim.c:735
EVENT2_EXPORT_SYMBOL int bufferevent_flush(struct bufferevent *bufev, short iotype, enum bufferevent_flush_mode mode)
Definition: bufferevent.c:667
EVENT2_EXPORT_SYMBOL int bufferevent_disable(struct bufferevent *bufev, short event)
Definition: bufferevent.c:573
EVENT2_EXPORT_SYMBOL evutil_socket_t bufferevent_getfd(struct bufferevent *bufev)
Definition: bufferevent.c:880
EVENT2_EXPORT_SYMBOL void bufferevent_rate_limit_group_free(struct bufferevent_rate_limit_group *)
Definition: bufferevent_ratelim.c:724
EVENT2_EXPORT_SYMBOL int bufferevent_socket_connect(struct bufferevent *, const struct sockaddr *, int)
Definition: bufferevent_sock.c:380
EVENT2_EXPORT_SYMBOL int bufferevent_setfd(struct bufferevent *bufev, evutil_socket_t fd)
Definition: bufferevent.c:865
EVENT2_EXPORT_SYMBOL struct bufferevent * bufferevent_socket_new(struct event_base *base, evutil_socket_t fd, int options)
Definition: bufferevent_sock.c:344
bufferevent_trigger_options
Definition: bufferevent.h:622
@ BEV_TRIG_IGNORE_WATERMARKS
Definition: bufferevent.h:624
@ BEV_TRIG_DEFER_CALLBACKS
Definition: bufferevent.h:627
EVENT2_EXPORT_SYMBOL int bufferevent_write(struct bufferevent *bufev, const void *data, size_t size)
Definition: bufferevent.c:452
EVENT2_EXPORT_SYMBOL void ev_token_bucket_cfg_free(struct ev_token_bucket_cfg *cfg)
Definition: bufferevent_ratelim.c:176
EVENT2_EXPORT_SYMBOL void bufferevent_lock(struct bufferevent *bufev)
Definition: bufferevent.c:1027
EVENT2_EXPORT_SYMBOL void bufferevent_free(struct bufferevent *bufev)
Definition: bufferevent.c:806
EVENT2_EXPORT_SYMBOL int bufferevent_set_max_single_write(struct bufferevent *bev, size_t size)
Definition: bufferevent_ratelim.c:869
EVENT2_EXPORT_SYMBOL size_t bufferevent_read(struct bufferevent *bufev, void *data, size_t size)
Definition: bufferevent.c:470
bufferevent_options
Definition: bufferevent.h:153
@ BEV_OPT_DEFER_CALLBACKS
Definition: bufferevent.h:163
@ BEV_OPT_CLOSE_ON_FREE
Definition: bufferevent.h:156
@ BEV_OPT_UNLOCK_CALLBACKS
Definition: bufferevent.h:169
@ BEV_OPT_THREADSAFE
Definition: bufferevent.h:160
EVENT2_EXPORT_SYMBOL int bufferevent_socket_get_dns_error(struct bufferevent *bev)
Definition: bufferevent_sock.c:528
EVENT2_EXPORT_SYMBOL int bufferevent_enable(struct bufferevent *bufev, short event)
Definition: bufferevent.c:482
EVENT2_EXPORT_SYMBOL short bufferevent_get_enabled(struct bufferevent *bufev)
Definition: bufferevent.c:919
EVENT2_EXPORT_SYMBOL int bufferevent_read_buffer(struct bufferevent *bufev, struct evbuffer *buf)
Definition: bufferevent.c:476
bufferevent_flush_mode
Definition: bufferevent.h:594
@ BEV_FLUSH
Definition: bufferevent.h:599
@ BEV_NORMAL
Definition: bufferevent.h:596
@ BEV_FINISHED
Definition: bufferevent.h:602
EVENT2_EXPORT_SYMBOL int bufferevent_set_max_single_read(struct bufferevent *bev, size_t size)
Definition: bufferevent_ratelim.c:855
EVENT2_EXPORT_SYMBOL int bufferevent_pair_new(struct event_base *base, int options, struct bufferevent *pair[2])
Definition: bufferevent_pair.c:115
EVENT2_EXPORT_SYMBOL struct evbuffer * bufferevent_get_output(struct bufferevent *bufev)
Definition: bufferevent.c:430
EVENT2_EXPORT_SYMBOL void bufferevent_rate_limit_group_get_totals(struct bufferevent_rate_limit_group *grp, ev_uint64_t *total_read_out, ev_uint64_t *total_written_out)
Definition: bufferevent_ratelim.c:1065
EVENT2_EXPORT_SYMBOL int bufferevent_write_buffer(struct bufferevent *bufev, struct evbuffer *buf)
Definition: bufferevent.c:461
EVENT2_EXPORT_SYMBOL ev_ssize_t bufferevent_get_max_single_write(struct bufferevent *bev)
Definition: bufferevent_ratelim.c:894
EVENT2_EXPORT_SYMBOL int bufferevent_base_set(struct event_base *base, struct bufferevent *bufev)
Definition: bufferevent_sock.c:671
void(* bufferevent_data_cb)(struct bufferevent *bev, void *ctx)
Definition: bufferevent.h:131
EVENT2_EXPORT_SYMBOL int bufferevent_set_rate_limit(struct bufferevent *bev, struct ev_token_bucket_cfg *cfg)
Definition: bufferevent_ratelim.c:560
enum bufferevent_filter_result(* bufferevent_filter_cb)(struct evbuffer *src, struct evbuffer *dst, ev_ssize_t dst_limit, enum bufferevent_flush_mode mode, void *ctx)
Definition: bufferevent.h:699
EVENT2_EXPORT_SYMBOL void bufferevent_setwatermark(struct bufferevent *bufev, short events, size_t lowmark, size_t highmark)
Definition: bufferevent.c:594
EVENT2_EXPORT_SYMBOL int bufferevent_getwatermark(struct bufferevent *bufev, short events, size_t *lowmark, size_t *highmark)
Definition: bufferevent.c:641
EVENT2_EXPORT_SYMBOL void bufferevent_trigger(struct bufferevent *bufev, short iotype, int options)
Definition: bufferevent.c:277
EVENT2_EXPORT_SYMBOL void bufferevent_getcb(struct bufferevent *bufev, bufferevent_data_cb *readcb_ptr, bufferevent_data_cb *writecb_ptr, bufferevent_event_cb *eventcb_ptr, void **cbarg_ptr)
Definition: bufferevent.c:404
EVENT2_EXPORT_SYMBOL void bufferevent_trigger_event(struct bufferevent *bufev, short what, int options)
Definition: bufferevent.c:301
EVENT2_EXPORT_SYMBOL int bufferevent_set_timeouts(struct bufferevent *bufev, const struct timeval *timeout_read, const struct timeval *timeout_write)
Definition: bufferevent.c:506
EVENT2_EXPORT_SYMBOL int bufferevent_socket_connect_hostname(struct bufferevent *, struct evdns_base *, int, const char *, int)
Definition: bufferevent_sock.c:494
EVENT2_EXPORT_SYMBOL struct bufferevent_rate_limit_group * bufferevent_rate_limit_group_new(struct event_base *base, const struct ev_token_bucket_cfg *cfg)
Definition: bufferevent_ratelim.c:638
Definition: bufferevent-internal.h:79
Definition: bufferevent_struct.h:70
Definition: ratelim-internal.h:48
size_t write_rate
Definition: ratelim-internal.h:54
size_t read_rate
Definition: ratelim-internal.h:50
Definition: evbuffer-internal.h:80
Definition: event-internal.h:208
Definition: event_struct.h:123
Definition: http-server.c:102
#define evutil_socket_t
Definition: util.h:310