27 #ifndef EVBUFFER_INTERNAL_H_INCLUDED_
28 #define EVBUFFER_INTERNAL_H_INCLUDED_
34 #include "event2/event-config.h"
35 #include "evconfig-private.h"
38 #include "util-internal.h"
39 #include "defer-internal.h"
44 #define EVBUFFER_CB_NODEFER 2
49 #include <sys/queue.h>
54 #if EVENT__SIZEOF_VOID_P < 8
55 #define MIN_BUFFER_SIZE 512
57 #define MIN_BUFFER_SIZE 1024
111 #ifndef EVENT__DISABLE_THREAD_SUPPORT
132 unsigned is_overlapped : 1;
158 #if EVENT__SIZEOF_OFF_T < EVENT__SIZEOF_SIZE_T
159 typedef ev_ssize_t ev_misalign_t;
160 #define EVBUFFER_CHAIN_MAX ((size_t)EV_SSIZE_MAX)
162 typedef ev_off_t ev_misalign_t;
163 #if EVENT__SIZEOF_OFF_T > EVENT__SIZEOF_SIZE_T
164 #define EVBUFFER_CHAIN_MAX EV_SIZE_MAX
166 #define EVBUFFER_CHAIN_MAX ((size_t)EV_SSIZE_MAX)
189 #define EVBUFFER_FILESEGMENT 0x0001
190 #define EVBUFFER_SENDFILE 0x0002
191 #define EVBUFFER_REFERENCE 0x0004
192 #define EVBUFFER_IMMUTABLE 0x0008
195 #define EVBUFFER_MEM_PINNED_R 0x0010
196 #define EVBUFFER_MEM_PINNED_W 0x0020
197 #define EVBUFFER_MEM_PINNED_ANY (EVBUFFER_MEM_PINNED_R|EVBUFFER_MEM_PINNED_W)
200 #define EVBUFFER_DANGLING 0x0040
202 #define EVBUFFER_MULTICAST 0x0080
242 unsigned is_mapping : 1;
250 HANDLE mapping_handle;
277 #define EVBUFFER_CHAIN_SIZE sizeof(struct evbuffer_chain)
279 #define EVBUFFER_CHAIN_EXTRA(t, c) (t *)((struct evbuffer_chain *)(c) + 1)
282 #define ASSERT_EVBUFFER_LOCKED(buffer) \
283 EVLOCK_ASSERT_LOCKED((buffer)->lock)
285 #define EVBUFFER_LOCK(buffer) \
287 EVLOCK_LOCK((buffer)->lock, 0); \
289 #define EVBUFFER_UNLOCK(buffer) \
291 EVLOCK_UNLOCK((buffer)->lock, 0); \
293 #define EVBUFFER_LOCK2(buffer1, buffer2) \
295 EVLOCK_LOCK2((buffer1)->lock, (buffer2)->lock, 0, 0); \
297 #define EVBUFFER_UNLOCK2(buffer1, buffer2) \
299 EVLOCK_UNLOCK2((buffer1)->lock, (buffer2)->lock, 0, 0); \
303 void evbuffer_incref_(
struct evbuffer *buf);
305 void evbuffer_incref_and_lock_(
struct evbuffer *buf);
308 void evbuffer_chain_pin_(
struct evbuffer_chain *chain,
unsigned flag);
310 void evbuffer_chain_unpin_(
struct evbuffer_chain *chain,
unsigned flag);
317 int evbuffer_expand_fast_(
struct evbuffer *,
size_t,
int);
325 int evbuffer_read_setup_vecs_(
struct evbuffer *buf, ev_ssize_t howmuch,
330 #define WSABUF_FROM_EVBUFFER_IOV(i,ei) do { \
331 (i)->buf = (ei)->iov_base; \
332 (i)->len = (unsigned long)(ei)->iov_len; \
340 void evbuffer_invoke_callbacks_(
struct evbuffer *buf);
void(* evbuffer_ref_cleanup_cb)(const void *data, size_t datalen, void *extra)
Definition: buffer.h:475
void(* evbuffer_cb_func)(struct evbuffer *buffer, const struct evbuffer_cb_info *info, void *arg)
Definition: buffer.h:888
void(* evbuffer_file_segment_cleanup_cb)(struct evbuffer_file_segment const *seg, int flags, void *arg)
Definition: buffer.h:569
void(* evbuffer_cb)(struct evbuffer *buffer, size_t old_len, size_t new_len, void *arg)
Definition: buffer_compat.h:73
Definition: bufferevent_struct.h:70
Definition: evbuffer-internal.h:62
union evbuffer_cb_entry::@1 cb
LIST_ENTRY(evbuffer_cb_entry) next
ev_uint32_t flags
Definition: evbuffer-internal.h:75
void * cbarg
Definition: evbuffer-internal.h:73
Definition: evbuffer-internal.h:226
Definition: evbuffer-internal.h:219
Definition: evbuffer-internal.h:171
struct evbuffer_chain * next
Definition: evbuffer-internal.h:173
ev_misalign_t misalign
Definition: evbuffer-internal.h:180
size_t buffer_len
Definition: evbuffer-internal.h:176
unsigned flags
Definition: evbuffer-internal.h:188
unsigned char * buffer
Definition: evbuffer-internal.h:213
size_t off
Definition: evbuffer-internal.h:185
int refcnt
Definition: evbuffer-internal.h:205
Definition: evbuffer-internal.h:235
unsigned can_sendfile
Definition: evbuffer-internal.h:241
int refcnt
Definition: evbuffer-internal.h:237
evbuffer_file_segment_cleanup_cb cleanup_cb
Definition: evbuffer-internal.h:263
void * lock
Definition: evbuffer-internal.h:236
ev_off_t mmap_offset
Definition: evbuffer-internal.h:259
ev_off_t length
Definition: evbuffer-internal.h:261
unsigned flags
Definition: evbuffer-internal.h:238
void * mapping
Definition: evbuffer-internal.h:247
int fd
Definition: evbuffer-internal.h:245
ev_off_t file_offset
Definition: evbuffer-internal.h:256
void * cleanup_cb_arg
Definition: evbuffer-internal.h:265
char * contents
Definition: evbuffer-internal.h:254
Definition: evbuffer-internal.h:270
struct evbuffer * source
Definition: evbuffer-internal.h:272
struct evbuffer_chain * parent
Definition: evbuffer-internal.h:274
Definition: evbuffer-internal.h:80
unsigned freeze_start
Definition: evbuffer-internal.h:120
unsigned own_lock
Definition: evbuffer-internal.h:117
struct event_callback deferred
Definition: evbuffer-internal.h:148
void * lock
Definition: evbuffer-internal.h:113
ev_uint32_t flags
Definition: evbuffer-internal.h:135
struct evbuffer_chain * first
Definition: evbuffer-internal.h:82
size_t n_del_for_cb
Definition: evbuffer-internal.h:109
unsigned deferred_cbs
Definition: evbuffer-internal.h:129
unsigned freeze_end
Definition: evbuffer-internal.h:123
LIST_HEAD(evbuffer_cb_queue, evbuffer_cb_entry) callbacks
struct event_base * cb_queue
Definition: evbuffer-internal.h:138
int refcnt
Definition: evbuffer-internal.h:144
struct evbuffer_chain ** last_with_datap
Definition: evbuffer-internal.h:99
struct evbuffer_chain * last
Definition: evbuffer-internal.h:84
size_t n_add_for_cb
Definition: evbuffer-internal.h:106
struct bufferevent * parent
Definition: evbuffer-internal.h:155
size_t total_len
Definition: evbuffer-internal.h:102
Definition: event-internal.h:208
Definition: event_struct.h:107