libevent
bufferevent.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2000-2007 Niels Provos <provos@citi.umich.edu>
3  * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * 3. The name of the author may not be used to endorse or promote products
14  * derived from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27 #ifndef EVENT2_BUFFEREVENT_H_INCLUDED_
28 #define EVENT2_BUFFEREVENT_H_INCLUDED_
29 
77 #include <event2/visibility.h>
78 
79 #ifdef __cplusplus
80 extern "C" {
81 #endif
82 
83 #include <event2/event-config.h>
84 #ifdef EVENT__HAVE_SYS_TYPES_H
85 #include <sys/types.h>
86 #endif
87 #ifdef EVENT__HAVE_SYS_TIME_H
88 #include <sys/time.h>
89 #endif
90 
91 /* For int types. */
92 #include <event2/util.h>
93 
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
113 struct bufferevent
114 #ifdef EVENT_IN_DOXYGEN_
115 {}
116 #endif
117 ;
118 struct event_base;
119 struct evbuffer;
120 struct sockaddr;
121 
135 typedef void (*bufferevent_data_cb)(struct bufferevent *bev, void *ctx);
136 
154 typedef void (*bufferevent_event_cb)(struct bufferevent *bev, short what, void *ctx);
155 
161 
165 
168 
173  BEV_OPT_UNLOCK_CALLBACKS = (1<<3)
174 };
175 
189 EVENT2_EXPORT_SYMBOL
190 struct bufferevent *bufferevent_socket_new(struct event_base *base, evutil_socket_t fd, int options);
191 
211 EVENT2_EXPORT_SYMBOL
212 int bufferevent_socket_connect(struct bufferevent *, const struct sockaddr *, int);
213 
214 struct evdns_base;
241 EVENT2_EXPORT_SYMBOL
243  struct evdns_base *, int, const char *, int);
244 
253 EVENT2_EXPORT_SYMBOL
255 
267 EVENT2_EXPORT_SYMBOL
268 int bufferevent_base_set(struct event_base *base, struct bufferevent *bufev);
269 
273 EVENT2_EXPORT_SYMBOL
275 
285 EVENT2_EXPORT_SYMBOL
286 int bufferevent_priority_set(struct bufferevent *bufev, int pri);
287 
293 EVENT2_EXPORT_SYMBOL
294 int bufferevent_get_priority(const struct bufferevent *bufev);
295 
304 EVENT2_EXPORT_SYMBOL
305 void bufferevent_free(struct bufferevent *bufev);
306 
307 
322 EVENT2_EXPORT_SYMBOL
323 void bufferevent_setcb(struct bufferevent *bufev,
325  bufferevent_event_cb eventcb, void *cbarg);
326 
341 EVENT2_EXPORT_SYMBOL
342 void bufferevent_getcb(struct bufferevent *bufev,
343  bufferevent_data_cb *readcb_ptr,
344  bufferevent_data_cb *writecb_ptr,
345  bufferevent_event_cb *eventcb_ptr,
346  void **cbarg_ptr);
347 
355 EVENT2_EXPORT_SYMBOL
357 
362 EVENT2_EXPORT_SYMBOL
364 
369 EVENT2_EXPORT_SYMBOL
371 
385 EVENT2_EXPORT_SYMBOL
386 int bufferevent_write(struct bufferevent *bufev,
387  const void *data, size_t size);
388 
389 
399 EVENT2_EXPORT_SYMBOL
400 int bufferevent_write_buffer(struct bufferevent *bufev, struct evbuffer *buf);
401 
402 
413 EVENT2_EXPORT_SYMBOL
414 size_t bufferevent_read(struct bufferevent *bufev, void *data, size_t size);
415 
424 EVENT2_EXPORT_SYMBOL
425 int bufferevent_read_buffer(struct bufferevent *bufev, struct evbuffer *buf);
426 
436 EVENT2_EXPORT_SYMBOL
438 
451 EVENT2_EXPORT_SYMBOL
453 
462 EVENT2_EXPORT_SYMBOL
463 int bufferevent_enable(struct bufferevent *bufev, short event);
464 
473 EVENT2_EXPORT_SYMBOL
474 int bufferevent_disable(struct bufferevent *bufev, short event);
475 
482 EVENT2_EXPORT_SYMBOL
484 
511 EVENT2_EXPORT_SYMBOL
513  const struct timeval *timeout_read, const struct timeval *timeout_write);
514 
533 EVENT2_EXPORT_SYMBOL
534 void bufferevent_setwatermark(struct bufferevent *bufev, short events,
535  size_t lowmark, size_t highmark);
536 
547 EVENT2_EXPORT_SYMBOL
548 int bufferevent_getwatermark(struct bufferevent *bufev, short events,
549  size_t *lowmark, size_t *highmark);
550 
555 EVENT2_EXPORT_SYMBOL
556 void bufferevent_lock(struct bufferevent *bufev);
557 
562 EVENT2_EXPORT_SYMBOL
563 void bufferevent_unlock(struct bufferevent *bufev);
564 
565 
574 EVENT2_EXPORT_SYMBOL
575 void bufferevent_incref(struct bufferevent *bufev);
576 
588 EVENT2_EXPORT_SYMBOL
589 int bufferevent_decref(struct bufferevent *bufev);
590 
598 
601 
603  BEV_FINISHED = 2
604 };
605 
614 EVENT2_EXPORT_SYMBOL
615 int bufferevent_flush(struct bufferevent *bufev,
616  short iotype,
617  enum bufferevent_flush_mode mode);
618 
626 
629 
630  /* (Note: for internal reasons, these need to be disjoint from
631  * bufferevent_options, except when they mean the same thing. */
632 };
633 
645 EVENT2_EXPORT_SYMBOL
646 void bufferevent_trigger(struct bufferevent *bufev, short iotype,
647  int options);
648 
658 EVENT2_EXPORT_SYMBOL
659 void bufferevent_trigger_event(struct bufferevent *bufev, short what,
660  int options);
661 
672  BEV_OK = 0,
673 
676 
679  BEV_ERROR = 2
680 };
681 
701  struct evbuffer *src, struct evbuffer *dst, ev_ssize_t dst_limit,
702  enum bufferevent_flush_mode mode, void *ctx);
703 
717 EVENT2_EXPORT_SYMBOL
718 struct bufferevent *
720  bufferevent_filter_cb input_filter,
721  bufferevent_filter_cb output_filter,
722  int options,
723  void (*free_context)(void *),
724  void *ctx);
737 EVENT2_EXPORT_SYMBOL
738 int bufferevent_pair_new(struct event_base *base, int options,
739  struct bufferevent *pair[2]);
740 
745 EVENT2_EXPORT_SYMBOL
747 
752 struct ev_token_bucket_cfg;
753 
758 struct bufferevent_rate_limit_group;
759 
761 #define EV_RATE_LIMIT_MAX EV_SSIZE_MAX
762 
779 EVENT2_EXPORT_SYMBOL
780 struct ev_token_bucket_cfg *ev_token_bucket_cfg_new(
781  size_t read_rate, size_t read_burst,
782  size_t write_rate, size_t write_burst,
783  const struct timeval *tick_len);
784 
790 EVENT2_EXPORT_SYMBOL
791 void ev_token_bucket_cfg_free(struct ev_token_bucket_cfg *cfg);
792 
804 EVENT2_EXPORT_SYMBOL
806  struct ev_token_bucket_cfg *cfg);
807 
825 EVENT2_EXPORT_SYMBOL
826 struct bufferevent_rate_limit_group *bufferevent_rate_limit_group_new(
827  struct event_base *base,
828  const struct ev_token_bucket_cfg *cfg);
834 EVENT2_EXPORT_SYMBOL
836  struct bufferevent_rate_limit_group *,
837  const struct ev_token_bucket_cfg *);
838 
855 EVENT2_EXPORT_SYMBOL
857  struct bufferevent_rate_limit_group *, size_t);
858 
863 EVENT2_EXPORT_SYMBOL
864 void bufferevent_rate_limit_group_free(struct bufferevent_rate_limit_group *);
865 
876 EVENT2_EXPORT_SYMBOL
878  struct bufferevent_rate_limit_group *g);
879 
881 EVENT2_EXPORT_SYMBOL
883 
891 EVENT2_EXPORT_SYMBOL
892 int bufferevent_set_max_single_read(struct bufferevent *bev, size_t size);
893 
901 EVENT2_EXPORT_SYMBOL
902 int bufferevent_set_max_single_write(struct bufferevent *bev, size_t size);
903 
905 EVENT2_EXPORT_SYMBOL
907 
909 EVENT2_EXPORT_SYMBOL
911 
923 EVENT2_EXPORT_SYMBOL
924 ev_ssize_t bufferevent_get_read_limit(struct bufferevent *bev);
925 EVENT2_EXPORT_SYMBOL
926 ev_ssize_t bufferevent_get_write_limit(struct bufferevent *bev);
929 EVENT2_EXPORT_SYMBOL
930 ev_ssize_t bufferevent_get_max_to_read(struct bufferevent *bev);
931 EVENT2_EXPORT_SYMBOL
932 ev_ssize_t bufferevent_get_max_to_write(struct bufferevent *bev);
933 
934 EVENT2_EXPORT_SYMBOL
935 const struct ev_token_bucket_cfg *bufferevent_get_token_bucket_cfg(const struct bufferevent * bev);
936 
946 EVENT2_EXPORT_SYMBOL
947 ev_ssize_t bufferevent_rate_limit_group_get_read_limit(
948  struct bufferevent_rate_limit_group *);
949 EVENT2_EXPORT_SYMBOL
950 ev_ssize_t bufferevent_rate_limit_group_get_write_limit(
951  struct bufferevent_rate_limit_group *);
968 EVENT2_EXPORT_SYMBOL
969 int bufferevent_decrement_read_limit(struct bufferevent *bev, ev_ssize_t decr);
970 EVENT2_EXPORT_SYMBOL
971 int bufferevent_decrement_write_limit(struct bufferevent *bev, ev_ssize_t decr);
987 EVENT2_EXPORT_SYMBOL
988 int bufferevent_rate_limit_group_decrement_read(
989  struct bufferevent_rate_limit_group *, ev_ssize_t);
990 EVENT2_EXPORT_SYMBOL
991 int bufferevent_rate_limit_group_decrement_write(
992  struct bufferevent_rate_limit_group *, ev_ssize_t);
1002 EVENT2_EXPORT_SYMBOL
1004  struct bufferevent_rate_limit_group *grp,
1005  ev_uint64_t *total_read_out, ev_uint64_t *total_written_out);
1006 
1012 EVENT2_EXPORT_SYMBOL
1013 void
1015  struct bufferevent_rate_limit_group *grp);
1016 
1017 #ifdef __cplusplus
1018 }
1019 #endif
1020 
1021 #endif /* EVENT2_BUFFEREVENT_H_INCLUDED_ */
bufferevent_flush
EVENT2_EXPORT_SYMBOL int bufferevent_flush(struct bufferevent *bufev, short iotype, enum bufferevent_flush_mode mode)
Triggers the bufferevent to produce more data if possible.
ev_token_bucket_cfg_free
EVENT2_EXPORT_SYMBOL void ev_token_bucket_cfg_free(struct ev_token_bucket_cfg *cfg)
Free all storage held in 'cfg'.
BEV_OPT_CLOSE_ON_FREE
@ BEV_OPT_CLOSE_ON_FREE
If set, we close the underlying file descriptor/bufferevent/whatever when this bufferevent is freed.
Definition: bufferevent.h:160
bufferevent_pair_get_partner
EVENT2_EXPORT_SYMBOL struct bufferevent * bufferevent_pair_get_partner(struct bufferevent *bev)
Given one bufferevent returned by bufferevent_pair_new(), returns the other one if it still exists.
bufferevent_setfd
EVENT2_EXPORT_SYMBOL int bufferevent_setfd(struct bufferevent *bufev, evutil_socket_t fd)
Changes the file descriptor on which the bufferevent operates.
bufferevent_get_output
EVENT2_EXPORT_SYMBOL struct evbuffer * bufferevent_get_output(struct bufferevent *bufev)
Returns the output buffer.
BEV_TRIG_IGNORE_WATERMARKS
@ BEV_TRIG_IGNORE_WATERMARKS
trigger the callback regardless of the watermarks
Definition: bufferevent.h:625
bufferevent_priority_set
EVENT2_EXPORT_SYMBOL int bufferevent_priority_set(struct bufferevent *bufev, int pri)
Assign a priority to a bufferevent.
bufferevent_set_timeouts
EVENT2_EXPORT_SYMBOL int bufferevent_set_timeouts(struct bufferevent *bufev, const struct timeval *timeout_read, const struct timeval *timeout_write)
Set the read and write timeout for a bufferevent.
ev_token_bucket_cfg_new
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)
Initialize and return a new object to configure the rate-limiting behavior of bufferevents.
bufferevent_flush_mode
bufferevent_flush_mode
Flags that can be passed into filters to let them know how to deal with the incoming data.
Definition: bufferevent.h:595
bufferevent_rate_limit_group_new
EVENT2_EXPORT_SYMBOL struct bufferevent_rate_limit_group * bufferevent_rate_limit_group_new(struct event_base *base, const struct ev_token_bucket_cfg *cfg)
Create a new rate-limit group for bufferevents.
bufferevent_rate_limit_group_reset_totals
EVENT2_EXPORT_SYMBOL void bufferevent_rate_limit_group_reset_totals(struct bufferevent_rate_limit_group *grp)
Reset the total bytes read/written on a group.
bufferevent_socket_get_dns_error
EVENT2_EXPORT_SYMBOL int bufferevent_socket_get_dns_error(struct bufferevent *bev)
Return the error code for the last failed DNS lookup attempt made by bufferevent_socket_connect_hostn...
bufferevent_get_underlying
EVENT2_EXPORT_SYMBOL struct bufferevent * bufferevent_get_underlying(struct bufferevent *bufev)
Returns the underlying bufferevent associated with a bufferevent (if the bufferevent is a wrapper),...
bufferevent_rate_limit_group_free
EVENT2_EXPORT_SYMBOL void bufferevent_rate_limit_group_free(struct bufferevent_rate_limit_group *)
Free a rate-limiting group.
bufferevent_get_max_single_read
EVENT2_EXPORT_SYMBOL ev_ssize_t bufferevent_get_max_single_read(struct bufferevent *bev)
Get the current size limit for single read operation.
bufferevent_getcb
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)
Retrieves the callbacks for a bufferevent.
bufferevent_base_set
EVENT2_EXPORT_SYMBOL int bufferevent_base_set(struct event_base *base, struct bufferevent *bufev)
Assign a bufferevent to a specific event_base.
event_base
Structure to hold information and state for a Libevent dispatch loop.
Definition: event.h:219
bufferevent_enable
EVENT2_EXPORT_SYMBOL int bufferevent_enable(struct bufferevent *bufev, short event)
Enable a bufferevent.
bufferevent_trigger_options
bufferevent_trigger_options
Flags for bufferevent_trigger(_event) that modify when and how to trigger the callback.
Definition: bufferevent.h:623
bufferevent_socket_connect
EVENT2_EXPORT_SYMBOL int bufferevent_socket_connect(struct bufferevent *, const struct sockaddr *, int)
Launch a connect() attempt with a socket-based bufferevent.
event
Definition: event.h:278
BEV_OPT_THREADSAFE
@ BEV_OPT_THREADSAFE
If set, and threading is enabled, operations on this bufferevent are protected by a lock.
Definition: bufferevent.h:164
bufferevent_getwatermark
EVENT2_EXPORT_SYMBOL int bufferevent_getwatermark(struct bufferevent *bufev, short events, size_t *lowmark, size_t *highmark)
Retrieves the watermarks for read or write events.
BEV_FLUSH
@ BEV_FLUSH
want to checkpoint all data sent.
Definition: bufferevent.h:600
bufferevent_read_buffer
EVENT2_EXPORT_SYMBOL int bufferevent_read_buffer(struct bufferevent *bufev, struct evbuffer *buf)
Read data from a bufferevent buffer into an evbuffer.
bufferevent_filter_new
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)
Allocate a new filtering bufferevent on top of an existing bufferevent.
bufferevent_get_input
EVENT2_EXPORT_SYMBOL struct evbuffer * bufferevent_get_input(struct bufferevent *bufev)
Returns the input buffer.
bufferevent_filter_cb
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)
A callback function to implement a filter for a bufferevent.
Definition: bufferevent.h:700
bufferevent_get_base
EVENT2_EXPORT_SYMBOL struct event_base * bufferevent_get_base(struct bufferevent *bev)
Return the event_base used by a bufferevent.
bufferevent_incref
EVENT2_EXPORT_SYMBOL void bufferevent_incref(struct bufferevent *bufev)
Public interface to manually increase the reference count of a bufferevent this is useful in situatio...
bufferevent
An opaque type for handling buffered IO.
Definition: bufferevent.h:115
bufferevent_lock
EVENT2_EXPORT_SYMBOL void bufferevent_lock(struct bufferevent *bufev)
Acquire the lock on a bufferevent.
bufferevent_set_rate_limit
EVENT2_EXPORT_SYMBOL int bufferevent_set_rate_limit(struct bufferevent *bev, struct ev_token_bucket_cfg *cfg)
Set the rate-limit of a the bufferevent 'bev' to the one specified in 'cfg'.
bufferevent_get_max_single_write
EVENT2_EXPORT_SYMBOL ev_ssize_t bufferevent_get_max_single_write(struct bufferevent *bev)
Get the current size limit for single write operation.
bufferevent_set_max_single_read
EVENT2_EXPORT_SYMBOL int bufferevent_set_max_single_read(struct bufferevent *bev, size_t size)
Set the size limit for single read operation.
evbuffer
An evbuffer is an opaque data type for efficiently buffering data to be sent or received on the netwo...
Definition: buffer.h:99
bufferevent_get_enabled
EVENT2_EXPORT_SYMBOL short bufferevent_get_enabled(struct bufferevent *bufev)
Return the events that are enabled on a given bufferevent.
bufferevent_getfd
EVENT2_EXPORT_SYMBOL evutil_socket_t bufferevent_getfd(struct bufferevent *bufev)
Returns the file descriptor associated with a bufferevent, or -1 if no file descriptor is associated ...
bufferevent_unlock
EVENT2_EXPORT_SYMBOL void bufferevent_unlock(struct bufferevent *bufev)
Release the lock on a bufferevent.
bufferevent_remove_from_rate_limit_group
EVENT2_EXPORT_SYMBOL int bufferevent_remove_from_rate_limit_group(struct bufferevent *bev)
Remove 'bev' from its current rate-limit group (if any).
bufferevent_get_priority
EVENT2_EXPORT_SYMBOL int bufferevent_get_priority(const struct bufferevent *bufev)
Return the priority of a bufferevent.
bufferevent_setwatermark
EVENT2_EXPORT_SYMBOL void bufferevent_setwatermark(struct bufferevent *bufev, short events, size_t lowmark, size_t highmark)
Sets the watermarks for read and write events.
bufferevent_rate_limit_group_get_totals
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)
Inspect the total bytes read/written on a group.
bufferevent_trigger
EVENT2_EXPORT_SYMBOL void bufferevent_trigger(struct bufferevent *bufev, short iotype, int options)
Triggers bufferevent data callbacks.
bufferevent_event_cb
void(* bufferevent_event_cb)(struct bufferevent *bev, short what, void *ctx)
An event/error callback for a bufferevent.
Definition: bufferevent.h:154
bufferevent_data_cb
void(* bufferevent_data_cb)(struct bufferevent *bev, void *ctx)
A read or write callback for a bufferevent.
Definition: bufferevent.h:135
bufferevent_trigger_event
EVENT2_EXPORT_SYMBOL void bufferevent_trigger_event(struct bufferevent *bufev, short what, int options)
Triggers the bufferevent event callback.
BEV_FINISHED
@ BEV_FINISHED
encountered EOF on read or done sending data
Definition: bufferevent.h:603
bufferevent_read
EVENT2_EXPORT_SYMBOL size_t bufferevent_read(struct bufferevent *bufev, void *data, size_t size)
Read data from a bufferevent buffer.
bufferevent_decref
EVENT2_EXPORT_SYMBOL int bufferevent_decref(struct bufferevent *bufev)
Public interface to manually decrement the reference count of a bufferevent.
BEV_NEED_MORE
@ BEV_NEED_MORE
the filter needs to read more data before output
Definition: bufferevent.h:675
BEV_OPT_UNLOCK_CALLBACKS
@ BEV_OPT_UNLOCK_CALLBACKS
If set, callbacks are executed without locks being held on the bufferevent.
Definition: bufferevent.h:173
bufferevent_setcb
EVENT2_EXPORT_SYMBOL void bufferevent_setcb(struct bufferevent *bufev, bufferevent_data_cb readcb, bufferevent_data_cb writecb, bufferevent_event_cb eventcb, void *cbarg)
Changes the callbacks for a bufferevent.
bufferevent_socket_connect_hostname
EVENT2_EXPORT_SYMBOL int bufferevent_socket_connect_hostname(struct bufferevent *, struct evdns_base *, int, const char *, int)
Resolve the hostname 'hostname' and connect to it as with bufferevent_socket_connect().
BEV_NORMAL
@ BEV_NORMAL
usually set when processing data
Definition: bufferevent.h:597
bufferevent_rate_limit_group_set_cfg
EVENT2_EXPORT_SYMBOL int bufferevent_rate_limit_group_set_cfg(struct bufferevent_rate_limit_group *, const struct ev_token_bucket_cfg *)
Change the rate-limiting settings for a given rate-limiting group.
bufferevent_pair_new
EVENT2_EXPORT_SYMBOL int bufferevent_pair_new(struct event_base *base, int options, struct bufferevent *pair[2])
Allocate a pair of linked bufferevents.
BEV_OPT_DEFER_CALLBACKS
@ BEV_OPT_DEFER_CALLBACKS
If set, callbacks are run deferred in the event loop.
Definition: bufferevent.h:167
bufferevent_rate_limit_group_set_min_share
EVENT2_EXPORT_SYMBOL int bufferevent_rate_limit_group_set_min_share(struct bufferevent_rate_limit_group *, size_t)
Change the smallest quantum we're willing to allocate to any single bufferevent in a group for readin...
bufferevent_socket_new
EVENT2_EXPORT_SYMBOL struct bufferevent * bufferevent_socket_new(struct event_base *base, evutil_socket_t fd, int options)
Create a new socket bufferevent over an existing socket.
bufferevent_free
EVENT2_EXPORT_SYMBOL void bufferevent_free(struct bufferevent *bufev)
Deallocate the storage associated with a bufferevent structure.
bufferevent_options
bufferevent_options
Options that can be specified when creating a bufferevent.
Definition: bufferevent.h:157
BEV_ERROR
@ BEV_ERROR
the filter encountered a critical error, no further data can be processed.
Definition: bufferevent.h:679
BEV_OK
@ BEV_OK
everything is okay
Definition: bufferevent.h:672
util.h
bufferevent_add_to_rate_limit_group
EVENT2_EXPORT_SYMBOL int bufferevent_add_to_rate_limit_group(struct bufferevent *bev, struct bufferevent_rate_limit_group *g)
Add 'bev' to the list of bufferevents whose aggregate reading and writing is restricted by 'g'.
bufferevent_set_max_single_write
EVENT2_EXPORT_SYMBOL int bufferevent_set_max_single_write(struct bufferevent *bev, size_t size)
Set the size limit for single write operation.
bufferevent_filter_result
bufferevent_filter_result
Values that filters can return.
Definition: bufferevent.h:670
bufferevent_write
EVENT2_EXPORT_SYMBOL int bufferevent_write(struct bufferevent *bufev, const void *data, size_t size)
Write data to a bufferevent buffer.
bufferevent_disable
EVENT2_EXPORT_SYMBOL int bufferevent_disable(struct bufferevent *bufev, short event)
Disable a bufferevent.
bufferevent_write_buffer
EVENT2_EXPORT_SYMBOL int bufferevent_write_buffer(struct bufferevent *bufev, struct evbuffer *buf)
Write data from an evbuffer to a bufferevent buffer.
evutil_socket_t
#define evutil_socket_t
A type wide enough to hold the output of "socket()" or "accept()".
Definition: util.h:312
BEV_TRIG_DEFER_CALLBACKS
@ BEV_TRIG_DEFER_CALLBACKS
defer even if the callbacks are not
Definition: bufferevent.h:628