overmind 0.1.0-x86_64-freebsd → 0.1.2-x86_64-freebsd

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/lib/overmind/version.rb +1 -1
  3. metadata +2 -66
  4. data/libexec/prebuilt-tmux/bin/event_rpcgen.py +0 -1925
  5. data/libexec/prebuilt-tmux/bin/tmux +0 -0
  6. data/libexec/prebuilt-tmux/include/evdns.h +0 -45
  7. data/libexec/prebuilt-tmux/include/event.h +0 -83
  8. data/libexec/prebuilt-tmux/include/event2/buffer.h +0 -1077
  9. data/libexec/prebuilt-tmux/include/event2/buffer_compat.h +0 -116
  10. data/libexec/prebuilt-tmux/include/event2/bufferevent.h +0 -1024
  11. data/libexec/prebuilt-tmux/include/event2/bufferevent_compat.h +0 -104
  12. data/libexec/prebuilt-tmux/include/event2/bufferevent_ssl.h +0 -134
  13. data/libexec/prebuilt-tmux/include/event2/bufferevent_struct.h +0 -116
  14. data/libexec/prebuilt-tmux/include/event2/dns.h +0 -751
  15. data/libexec/prebuilt-tmux/include/event2/dns_compat.h +0 -358
  16. data/libexec/prebuilt-tmux/include/event2/dns_struct.h +0 -80
  17. data/libexec/prebuilt-tmux/include/event2/event-config.h +0 -570
  18. data/libexec/prebuilt-tmux/include/event2/event.h +0 -1672
  19. data/libexec/prebuilt-tmux/include/event2/event_compat.h +0 -230
  20. data/libexec/prebuilt-tmux/include/event2/event_struct.h +0 -180
  21. data/libexec/prebuilt-tmux/include/event2/http.h +0 -1192
  22. data/libexec/prebuilt-tmux/include/event2/http_compat.h +0 -94
  23. data/libexec/prebuilt-tmux/include/event2/http_struct.h +0 -152
  24. data/libexec/prebuilt-tmux/include/event2/keyvalq_struct.h +0 -80
  25. data/libexec/prebuilt-tmux/include/event2/listener.h +0 -192
  26. data/libexec/prebuilt-tmux/include/event2/rpc.h +0 -626
  27. data/libexec/prebuilt-tmux/include/event2/rpc_compat.h +0 -61
  28. data/libexec/prebuilt-tmux/include/event2/rpc_struct.h +0 -114
  29. data/libexec/prebuilt-tmux/include/event2/tag.h +0 -146
  30. data/libexec/prebuilt-tmux/include/event2/tag_compat.h +0 -49
  31. data/libexec/prebuilt-tmux/include/event2/thread.h +0 -253
  32. data/libexec/prebuilt-tmux/include/event2/util.h +0 -888
  33. data/libexec/prebuilt-tmux/include/event2/visibility.h +0 -67
  34. data/libexec/prebuilt-tmux/include/evhttp.h +0 -45
  35. data/libexec/prebuilt-tmux/include/evrpc.h +0 -45
  36. data/libexec/prebuilt-tmux/include/evutil.h +0 -39
  37. data/libexec/prebuilt-tmux/include/utf8proc.h +0 -743
  38. data/libexec/prebuilt-tmux/lib/libevent-2.1.7.dylib +0 -0
  39. data/libexec/prebuilt-tmux/lib/libevent.a +0 -0
  40. data/libexec/prebuilt-tmux/lib/libevent.dylib +0 -1
  41. data/libexec/prebuilt-tmux/lib/libevent.la +0 -41
  42. data/libexec/prebuilt-tmux/lib/libevent_core-2.1.7.dylib +0 -0
  43. data/libexec/prebuilt-tmux/lib/libevent_core.a +0 -0
  44. data/libexec/prebuilt-tmux/lib/libevent_core.dylib +0 -1
  45. data/libexec/prebuilt-tmux/lib/libevent_core.la +0 -41
  46. data/libexec/prebuilt-tmux/lib/libevent_extra-2.1.7.dylib +0 -0
  47. data/libexec/prebuilt-tmux/lib/libevent_extra.a +0 -0
  48. data/libexec/prebuilt-tmux/lib/libevent_extra.dylib +0 -1
  49. data/libexec/prebuilt-tmux/lib/libevent_extra.la +0 -41
  50. data/libexec/prebuilt-tmux/lib/libevent_openssl-2.1.7.dylib +0 -0
  51. data/libexec/prebuilt-tmux/lib/libevent_openssl.a +0 -0
  52. data/libexec/prebuilt-tmux/lib/libevent_openssl.dylib +0 -1
  53. data/libexec/prebuilt-tmux/lib/libevent_openssl.la +0 -41
  54. data/libexec/prebuilt-tmux/lib/libevent_pthreads-2.1.7.dylib +0 -0
  55. data/libexec/prebuilt-tmux/lib/libevent_pthreads.a +0 -0
  56. data/libexec/prebuilt-tmux/lib/libevent_pthreads.dylib +0 -1
  57. data/libexec/prebuilt-tmux/lib/libevent_pthreads.la +0 -41
  58. data/libexec/prebuilt-tmux/lib/libutf8proc.3.dylib +0 -0
  59. data/libexec/prebuilt-tmux/lib/libutf8proc.a +0 -0
  60. data/libexec/prebuilt-tmux/lib/libutf8proc.dylib +0 -1
  61. data/libexec/prebuilt-tmux/lib/pkgconfig/libevent.pc +0 -16
  62. data/libexec/prebuilt-tmux/lib/pkgconfig/libevent_core.pc +0 -16
  63. data/libexec/prebuilt-tmux/lib/pkgconfig/libevent_extra.pc +0 -16
  64. data/libexec/prebuilt-tmux/lib/pkgconfig/libevent_openssl.pc +0 -16
  65. data/libexec/prebuilt-tmux/lib/pkgconfig/libevent_pthreads.pc +0 -16
  66. data/libexec/prebuilt-tmux/lib/pkgconfig/libutf8proc.pc +0 -10
  67. data/libexec/prebuilt-tmux/share/man/man1/tmux.1 +0 -7242
@@ -1,1077 +0,0 @@
1
- /*
2
- * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson
3
- *
4
- * Redistribution and use in source and binary forms, with or without
5
- * modification, are permitted provided that the following conditions
6
- * are met:
7
- * 1. Redistributions of source code must retain the above copyright
8
- * notice, this list of conditions and the following disclaimer.
9
- * 2. Redistributions in binary form must reproduce the above copyright
10
- * notice, this list of conditions and the following disclaimer in the
11
- * documentation and/or other materials provided with the distribution.
12
- * 3. The name of the author may not be used to endorse or promote products
13
- * derived from this software without specific prior written permission.
14
- *
15
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
- */
26
- #ifndef EVENT2_BUFFER_H_INCLUDED_
27
- #define EVENT2_BUFFER_H_INCLUDED_
28
-
29
- /** @file event2/buffer.h
30
-
31
- Functions for buffering data for network sending or receiving.
32
-
33
- An evbuffer can be used for preparing data before sending it to
34
- the network or conversely for reading data from the network.
35
- Evbuffers try to avoid memory copies as much as possible. As a
36
- result, evbuffers can be used to pass data around without actually
37
- incurring the overhead of copying the data.
38
-
39
- A new evbuffer can be allocated with evbuffer_new(), and can be
40
- freed with evbuffer_free(). Most users will be using evbuffers via
41
- the bufferevent interface. To access a bufferevent's evbuffers, use
42
- bufferevent_get_input() and bufferevent_get_output().
43
-
44
- There are several guidelines for using evbuffers.
45
-
46
- - if you already know how much data you are going to add as a result
47
- of calling evbuffer_add() multiple times, it makes sense to use
48
- evbuffer_expand() first to make sure that enough memory is allocated
49
- before hand.
50
-
51
- - evbuffer_add_buffer() adds the contents of one buffer to the other
52
- without incurring any unnecessary memory copies.
53
-
54
- - evbuffer_add() and evbuffer_add_buffer() do not mix very well:
55
- if you use them, you will wind up with fragmented memory in your
56
- buffer.
57
-
58
- - For high-performance code, you may want to avoid copying data into and out
59
- of buffers. You can skip the copy step by using
60
- evbuffer_reserve_space()/evbuffer_commit_space() when writing into a
61
- buffer, and evbuffer_peek() when reading.
62
-
63
- In Libevent 2.0 and later, evbuffers are represented using a linked
64
- list of memory chunks, with pointers to the first and last chunk in
65
- the chain.
66
-
67
- As the contents of an evbuffer can be stored in multiple different
68
- memory blocks, it cannot be accessed directly. Instead, evbuffer_pullup()
69
- can be used to force a specified number of bytes to be contiguous. This
70
- will cause memory reallocation and memory copies if the data is split
71
- across multiple blocks. It is more efficient, however, to use
72
- evbuffer_peek() if you don't require that the memory to be contiguous.
73
- */
74
-
75
- #include <event2/visibility.h>
76
-
77
- #ifdef __cplusplus
78
- extern "C" {
79
- #endif
80
-
81
- #include <event2/event-config.h>
82
- #include <stdarg.h>
83
- #ifdef EVENT__HAVE_SYS_TYPES_H
84
- #include <sys/types.h>
85
- #endif
86
- #ifdef EVENT__HAVE_SYS_UIO_H
87
- #include <sys/uio.h>
88
- #endif
89
- #include <event2/util.h>
90
-
91
- /**
92
- An evbuffer is an opaque data type for efficiently buffering data to be
93
- sent or received on the network.
94
-
95
- @see event2/event.h for more information
96
- */
97
- struct evbuffer
98
- #ifdef EVENT_IN_DOXYGEN_
99
- {}
100
- #endif
101
- ;
102
-
103
- /**
104
- Pointer to a position within an evbuffer.
105
-
106
- Used when repeatedly searching through a buffer. Calling any function
107
- that modifies or re-packs the buffer contents may invalidate all
108
- evbuffer_ptrs for that buffer. Do not modify or contruct these values
109
- except with evbuffer_ptr_set.
110
-
111
- An evbuffer_ptr can represent any position from the start of a buffer up
112
- to a position immediately after the end of a buffer.
113
-
114
- @see evbuffer_ptr_set()
115
- */
116
- struct evbuffer_ptr {
117
- ev_ssize_t pos;
118
-
119
- /* Do not alter or rely on the values of fields: they are for internal
120
- * use */
121
- struct {
122
- void *chain;
123
- size_t pos_in_chain;
124
- } internal_;
125
- };
126
-
127
- /** Describes a single extent of memory inside an evbuffer. Used for
128
- direct-access functions.
129
-
130
- @see evbuffer_reserve_space, evbuffer_commit_space, evbuffer_peek
131
- */
132
- #ifdef EVENT__HAVE_SYS_UIO_H
133
- #define evbuffer_iovec iovec
134
- /* Internal use -- defined only if we are using the native struct iovec */
135
- #define EVBUFFER_IOVEC_IS_NATIVE_
136
- #else
137
- struct evbuffer_iovec {
138
- /** The start of the extent of memory. */
139
- void *iov_base;
140
- /** The length of the extent of memory. */
141
- size_t iov_len;
142
- };
143
- #endif
144
-
145
- /**
146
- Allocate storage for a new evbuffer.
147
-
148
- @return a pointer to a newly allocated evbuffer struct, or NULL if an error
149
- occurred
150
- */
151
- EVENT2_EXPORT_SYMBOL
152
- struct evbuffer *evbuffer_new(void);
153
- /**
154
- Deallocate storage for an evbuffer.
155
-
156
- @param buf pointer to the evbuffer to be freed
157
- */
158
- EVENT2_EXPORT_SYMBOL
159
- void evbuffer_free(struct evbuffer *buf);
160
-
161
- /**
162
- Enable locking on an evbuffer so that it can safely be used by multiple
163
- threads at the same time.
164
-
165
- NOTE: when locking is enabled, the lock will be held when callbacks are
166
- invoked. This could result in deadlock if you aren't careful. Plan
167
- accordingly!
168
-
169
- @param buf An evbuffer to make lockable.
170
- @param lock A lock object, or NULL if we should allocate our own.
171
- @return 0 on success, -1 on failure.
172
- */
173
- EVENT2_EXPORT_SYMBOL
174
- int evbuffer_enable_locking(struct evbuffer *buf, void *lock);
175
-
176
- /**
177
- Acquire the lock on an evbuffer. Has no effect if locking was not enabled
178
- with evbuffer_enable_locking.
179
- */
180
- EVENT2_EXPORT_SYMBOL
181
- void evbuffer_lock(struct evbuffer *buf);
182
-
183
- /**
184
- Release the lock on an evbuffer. Has no effect if locking was not enabled
185
- with evbuffer_enable_locking.
186
- */
187
- EVENT2_EXPORT_SYMBOL
188
- void evbuffer_unlock(struct evbuffer *buf);
189
-
190
-
191
- /** If this flag is set, then we will not use evbuffer_peek(),
192
- * evbuffer_remove(), evbuffer_remove_buffer(), and so on to read bytes
193
- * from this buffer: we'll only take bytes out of this buffer by
194
- * writing them to the network (as with evbuffer_write_atmost), by
195
- * removing them without observing them (as with evbuffer_drain),
196
- * or by copying them all out at once (as with evbuffer_add_buffer).
197
- *
198
- * Using this option allows the implementation to use sendfile-based
199
- * operations for evbuffer_add_file(); see that function for more
200
- * information.
201
- *
202
- * This flag is on by default for bufferevents that can take advantage
203
- * of it; you should never actually need to set it on a bufferevent's
204
- * output buffer.
205
- */
206
- #define EVBUFFER_FLAG_DRAINS_TO_FD 1
207
-
208
- /** Change the flags that are set for an evbuffer by adding more.
209
- *
210
- * @param buffer the evbuffer that the callback is watching.
211
- * @param cb the callback whose status we want to change.
212
- * @param flags One or more EVBUFFER_FLAG_* options
213
- * @return 0 on success, -1 on failure.
214
- */
215
- EVENT2_EXPORT_SYMBOL
216
- int evbuffer_set_flags(struct evbuffer *buf, ev_uint64_t flags);
217
- /** Change the flags that are set for an evbuffer by removing some.
218
- *
219
- * @param buffer the evbuffer that the callback is watching.
220
- * @param cb the callback whose status we want to change.
221
- * @param flags One or more EVBUFFER_FLAG_* options
222
- * @return 0 on success, -1 on failure.
223
- */
224
- EVENT2_EXPORT_SYMBOL
225
- int evbuffer_clear_flags(struct evbuffer *buf, ev_uint64_t flags);
226
-
227
- /**
228
- Returns the total number of bytes stored in the evbuffer
229
-
230
- @param buf pointer to the evbuffer
231
- @return the number of bytes stored in the evbuffer
232
- */
233
- EVENT2_EXPORT_SYMBOL
234
- size_t evbuffer_get_length(const struct evbuffer *buf);
235
-
236
- /**
237
- Returns the number of contiguous available bytes in the first buffer chain.
238
-
239
- This is useful when processing data that might be split into multiple
240
- chains, or that might all be in the first chain. Calls to
241
- evbuffer_pullup() that cause reallocation and copying of data can thus be
242
- avoided.
243
-
244
- @param buf pointer to the evbuffer
245
- @return 0 if no data is available, otherwise the number of available bytes
246
- in the first buffer chain.
247
- */
248
- EVENT2_EXPORT_SYMBOL
249
- size_t evbuffer_get_contiguous_space(const struct evbuffer *buf);
250
-
251
- /**
252
- Expands the available space in an evbuffer.
253
-
254
- Expands the available space in the evbuffer to at least datlen, so that
255
- appending datlen additional bytes will not require any new allocations.
256
-
257
- @param buf the evbuffer to be expanded
258
- @param datlen the new minimum length requirement
259
- @return 0 if successful, or -1 if an error occurred
260
- */
261
- EVENT2_EXPORT_SYMBOL
262
- int evbuffer_expand(struct evbuffer *buf, size_t datlen);
263
-
264
- /**
265
- Reserves space in the last chain or chains of an evbuffer.
266
-
267
- Makes space available in the last chain or chains of an evbuffer that can
268
- be arbitrarily written to by a user. The space does not become
269
- available for reading until it has been committed with
270
- evbuffer_commit_space().
271
-
272
- The space is made available as one or more extents, represented by
273
- an initial pointer and a length. You can force the memory to be
274
- available as only one extent. Allowing more extents, however, makes the
275
- function more efficient.
276
-
277
- Multiple subsequent calls to this function will make the same space
278
- available until evbuffer_commit_space() has been called.
279
-
280
- It is an error to do anything that moves around the buffer's internal
281
- memory structures before committing the space.
282
-
283
- NOTE: The code currently does not ever use more than two extents.
284
- This may change in future versions.
285
-
286
- @param buf the evbuffer in which to reserve space.
287
- @param size how much space to make available, at minimum. The
288
- total length of the extents may be greater than the requested
289
- length.
290
- @param vec an array of one or more evbuffer_iovec structures to
291
- hold pointers to the reserved extents of memory.
292
- @param n_vec The length of the vec array. Must be at least 1;
293
- 2 is more efficient.
294
- @return the number of provided extents, or -1 on error.
295
- @see evbuffer_commit_space()
296
- */
297
- EVENT2_EXPORT_SYMBOL
298
- int
299
- evbuffer_reserve_space(struct evbuffer *buf, ev_ssize_t size,
300
- struct evbuffer_iovec *vec, int n_vec);
301
-
302
- /**
303
- Commits previously reserved space.
304
-
305
- Commits some of the space previously reserved with
306
- evbuffer_reserve_space(). It then becomes available for reading.
307
-
308
- This function may return an error if the pointer in the extents do
309
- not match those returned from evbuffer_reserve_space, or if data
310
- has been added to the buffer since the space was reserved.
311
-
312
- If you want to commit less data than you got reserved space for,
313
- modify the iov_len pointer of the appropriate extent to a smaller
314
- value. Note that you may have received more space than you
315
- requested if it was available!
316
-
317
- @param buf the evbuffer in which to reserve space.
318
- @param vec one or two extents returned by evbuffer_reserve_space.
319
- @param n_vecs the number of extents.
320
- @return 0 on success, -1 on error
321
- @see evbuffer_reserve_space()
322
- */
323
- EVENT2_EXPORT_SYMBOL
324
- int evbuffer_commit_space(struct evbuffer *buf,
325
- struct evbuffer_iovec *vec, int n_vecs);
326
-
327
- /**
328
- Append data to the end of an evbuffer.
329
-
330
- @param buf the evbuffer to be appended to
331
- @param data pointer to the beginning of the data buffer
332
- @param datlen the number of bytes to be copied from the data buffer
333
- @return 0 on success, -1 on failure.
334
- */
335
- EVENT2_EXPORT_SYMBOL
336
- int evbuffer_add(struct evbuffer *buf, const void *data, size_t datlen);
337
-
338
-
339
- /**
340
- Read data from an evbuffer and drain the bytes read.
341
-
342
- If more bytes are requested than are available in the evbuffer, we
343
- only extract as many bytes as were available.
344
-
345
- @param buf the evbuffer to be read from
346
- @param data the destination buffer to store the result
347
- @param datlen the maximum size of the destination buffer
348
- @return the number of bytes read, or -1 if we can't drain the buffer.
349
- */
350
- EVENT2_EXPORT_SYMBOL
351
- int evbuffer_remove(struct evbuffer *buf, void *data, size_t datlen);
352
-
353
- /**
354
- Read data from an evbuffer, and leave the buffer unchanged.
355
-
356
- If more bytes are requested than are available in the evbuffer, we
357
- only extract as many bytes as were available.
358
-
359
- @param buf the evbuffer to be read from
360
- @param data_out the destination buffer to store the result
361
- @param datlen the maximum size of the destination buffer
362
- @return the number of bytes read, or -1 if we can't drain the buffer.
363
- */
364
- EVENT2_EXPORT_SYMBOL
365
- ev_ssize_t evbuffer_copyout(struct evbuffer *buf, void *data_out, size_t datlen);
366
-
367
- /**
368
- Read data from the middle of an evbuffer, and leave the buffer unchanged.
369
-
370
- If more bytes are requested than are available in the evbuffer, we
371
- only extract as many bytes as were available.
372
-
373
- @param buf the evbuffer to be read from
374
- @param pos the position to start reading from
375
- @param data_out the destination buffer to store the result
376
- @param datlen the maximum size of the destination buffer
377
- @return the number of bytes read, or -1 if we can't drain the buffer.
378
- */
379
- EVENT2_EXPORT_SYMBOL
380
- ev_ssize_t evbuffer_copyout_from(struct evbuffer *buf, const struct evbuffer_ptr *pos, void *data_out, size_t datlen);
381
-
382
- /**
383
- Read data from an evbuffer into another evbuffer, draining
384
- the bytes from the source buffer. This function avoids copy
385
- operations to the extent possible.
386
-
387
- If more bytes are requested than are available in src, the src
388
- buffer is drained completely.
389
-
390
- @param src the evbuffer to be read from
391
- @param dst the destination evbuffer to store the result into
392
- @param datlen the maximum numbers of bytes to transfer
393
- @return the number of bytes read
394
- */
395
- EVENT2_EXPORT_SYMBOL
396
- int evbuffer_remove_buffer(struct evbuffer *src, struct evbuffer *dst,
397
- size_t datlen);
398
-
399
- /** Used to tell evbuffer_readln what kind of line-ending to look for.
400
- */
401
- enum evbuffer_eol_style {
402
- /** Any sequence of CR and LF characters is acceptable as an
403
- * EOL.
404
- *
405
- * Note that this style can produce ambiguous results: the
406
- * sequence "CRLF" will be treated as a single EOL if it is
407
- * all in the buffer at once, but if you first read a CR from
408
- * the network and later read an LF from the network, it will
409
- * be treated as two EOLs.
410
- */
411
- EVBUFFER_EOL_ANY,
412
- /** An EOL is an LF, optionally preceded by a CR. This style is
413
- * most useful for implementing text-based internet protocols. */
414
- EVBUFFER_EOL_CRLF,
415
- /** An EOL is a CR followed by an LF. */
416
- EVBUFFER_EOL_CRLF_STRICT,
417
- /** An EOL is a LF. */
418
- EVBUFFER_EOL_LF,
419
- /** An EOL is a NUL character (that is, a single byte with value 0) */
420
- EVBUFFER_EOL_NUL
421
- };
422
-
423
- /**
424
- * Read a single line from an evbuffer.
425
- *
426
- * Reads a line terminated by an EOL as determined by the evbuffer_eol_style
427
- * argument. Returns a newly allocated nul-terminated string; the caller must
428
- * free the returned value. The EOL is not included in the returned string.
429
- *
430
- * @param buffer the evbuffer to read from
431
- * @param n_read_out if non-NULL, points to a size_t that is set to the
432
- * number of characters in the returned string. This is useful for
433
- * strings that can contain NUL characters.
434
- * @param eol_style the style of line-ending to use.
435
- * @return pointer to a single line, or NULL if an error occurred
436
- */
437
- EVENT2_EXPORT_SYMBOL
438
- char *evbuffer_readln(struct evbuffer *buffer, size_t *n_read_out,
439
- enum evbuffer_eol_style eol_style);
440
-
441
- /**
442
- Move all data from one evbuffer into another evbuffer.
443
-
444
- This is a destructive add. The data from one buffer moves into
445
- the other buffer. However, no unnecessary memory copies occur.
446
-
447
- @param outbuf the output buffer
448
- @param inbuf the input buffer
449
- @return 0 if successful, or -1 if an error occurred
450
-
451
- @see evbuffer_remove_buffer()
452
- */
453
- EVENT2_EXPORT_SYMBOL
454
- int evbuffer_add_buffer(struct evbuffer *outbuf, struct evbuffer *inbuf);
455
-
456
- /**
457
- Copy data from one evbuffer into another evbuffer.
458
-
459
- This is a non-destructive add. The data from one buffer is copied
460
- into the other buffer. However, no unnecessary memory copies occur.
461
-
462
- Note that buffers already containing buffer references can't be added
463
- to other buffers.
464
-
465
- @param outbuf the output buffer
466
- @param inbuf the input buffer
467
- @return 0 if successful, or -1 if an error occurred
468
- */
469
- EVENT2_EXPORT_SYMBOL
470
- int evbuffer_add_buffer_reference(struct evbuffer *outbuf,
471
- struct evbuffer *inbuf);
472
-
473
- /**
474
- A cleanup function for a piece of memory added to an evbuffer by
475
- reference.
476
-
477
- @see evbuffer_add_reference()
478
- */
479
- typedef void (*evbuffer_ref_cleanup_cb)(const void *data,
480
- size_t datalen, void *extra);
481
-
482
- /**
483
- Reference memory into an evbuffer without copying.
484
-
485
- The memory needs to remain valid until all the added data has been
486
- read. This function keeps just a reference to the memory without
487
- actually incurring the overhead of a copy.
488
-
489
- @param outbuf the output buffer
490
- @param data the memory to reference
491
- @param datlen how memory to reference
492
- @param cleanupfn callback to be invoked when the memory is no longer
493
- referenced by this evbuffer.
494
- @param cleanupfn_arg optional argument to the cleanup callback
495
- @return 0 if successful, or -1 if an error occurred
496
- */
497
- EVENT2_EXPORT_SYMBOL
498
- int evbuffer_add_reference(struct evbuffer *outbuf,
499
- const void *data, size_t datlen,
500
- evbuffer_ref_cleanup_cb cleanupfn, void *cleanupfn_arg);
501
-
502
- /**
503
- Copy data from a file into the evbuffer for writing to a socket.
504
-
505
- This function avoids unnecessary data copies between userland and
506
- kernel. If sendfile is available and the EVBUFFER_FLAG_DRAINS_TO_FD
507
- flag is set, it uses those functions. Otherwise, it tries to use
508
- mmap (or CreateFileMapping on Windows).
509
-
510
- The function owns the resulting file descriptor and will close it
511
- when finished transferring data.
512
-
513
- The results of using evbuffer_remove() or evbuffer_pullup() on
514
- evbuffers whose data was added using this function are undefined.
515
-
516
- For more fine-grained control, use evbuffer_add_file_segment.
517
-
518
- @param outbuf the output buffer
519
- @param fd the file descriptor
520
- @param offset the offset from which to read data
521
- @param length how much data to read, or -1 to read as much as possible.
522
- (-1 requires that 'fd' support fstat.)
523
- @return 0 if successful, or -1 if an error occurred
524
- */
525
-
526
- EVENT2_EXPORT_SYMBOL
527
- int evbuffer_add_file(struct evbuffer *outbuf, int fd, ev_off_t offset,
528
- ev_off_t length);
529
-
530
- /**
531
- An evbuffer_file_segment holds a reference to a range of a file --
532
- possibly the whole file! -- for use in writing from an evbuffer to a
533
- socket. It could be implemented with mmap, sendfile, splice, or (if all
534
- else fails) by just pulling all the data into RAM. A single
535
- evbuffer_file_segment can be added more than once, and to more than one
536
- evbuffer.
537
- */
538
- struct evbuffer_file_segment;
539
-
540
- /**
541
- Flag for creating evbuffer_file_segment: If this flag is set, then when
542
- the evbuffer_file_segment is freed and no longer in use by any
543
- evbuffer, the underlying fd is closed.
544
- */
545
- #define EVBUF_FS_CLOSE_ON_FREE 0x01
546
- /**
547
- Flag for creating evbuffer_file_segment: Disable memory-map based
548
- implementations.
549
- */
550
- #define EVBUF_FS_DISABLE_MMAP 0x02
551
- /**
552
- Flag for creating evbuffer_file_segment: Disable direct fd-to-fd
553
- implementations (including sendfile and splice).
554
-
555
- You might want to use this option if data needs to be taken from the
556
- evbuffer by any means other than writing it to the network: the sendfile
557
- backend is fast, but it only works for sending files directly to the
558
- network.
559
- */
560
- #define EVBUF_FS_DISABLE_SENDFILE 0x04
561
- /**
562
- Flag for creating evbuffer_file_segment: Do not allocate a lock for this
563
- segment. If this option is set, then neither the segment nor any
564
- evbuffer it is added to may ever be accessed from more than one thread
565
- at a time.
566
- */
567
- #define EVBUF_FS_DISABLE_LOCKING 0x08
568
-
569
- /**
570
- A cleanup function for a evbuffer_file_segment added to an evbuffer
571
- for reference.
572
- */
573
- typedef void (*evbuffer_file_segment_cleanup_cb)(
574
- struct evbuffer_file_segment const* seg, int flags, void* arg);
575
-
576
- /**
577
- Create and return a new evbuffer_file_segment for reading data from a
578
- file and sending it out via an evbuffer.
579
-
580
- This function avoids unnecessary data copies between userland and
581
- kernel. Where available, it uses sendfile or splice.
582
-
583
- The file descriptor must not be closed so long as any evbuffer is using
584
- this segment.
585
-
586
- The results of using evbuffer_remove() or evbuffer_pullup() or any other
587
- function that reads bytes from an evbuffer on any evbuffer containing
588
- the newly returned segment are undefined, unless you pass the
589
- EVBUF_FS_DISABLE_SENDFILE flag to this function.
590
-
591
- @param fd an open file to read from.
592
- @param offset an index within the file at which to start reading
593
- @param length how much data to read, or -1 to read as much as possible.
594
- (-1 requires that 'fd' support fstat.)
595
- @param flags any number of the EVBUF_FS_* flags
596
- @return a new evbuffer_file_segment, or NULL on failure.
597
- **/
598
- EVENT2_EXPORT_SYMBOL
599
- struct evbuffer_file_segment *evbuffer_file_segment_new(
600
- int fd, ev_off_t offset, ev_off_t length, unsigned flags);
601
-
602
- /**
603
- Free an evbuffer_file_segment
604
-
605
- It is safe to call this function even if the segment has been added to
606
- one or more evbuffers. The evbuffer_file_segment will not be freed
607
- until no more references to it exist.
608
- */
609
- EVENT2_EXPORT_SYMBOL
610
- void evbuffer_file_segment_free(struct evbuffer_file_segment *seg);
611
-
612
- /**
613
- Add cleanup callback and argument for the callback to an
614
- evbuffer_file_segment.
615
-
616
- The cleanup callback will be invoked when no more references to the
617
- evbuffer_file_segment exist.
618
- **/
619
- EVENT2_EXPORT_SYMBOL
620
- void evbuffer_file_segment_add_cleanup_cb(struct evbuffer_file_segment *seg,
621
- evbuffer_file_segment_cleanup_cb cb, void* arg);
622
-
623
- /**
624
- Insert some or all of an evbuffer_file_segment at the end of an evbuffer
625
-
626
- Note that the offset and length parameters of this function have a
627
- different meaning from those provided to evbuffer_file_segment_new: When
628
- you create the segment, the offset is the offset _within the file_, and
629
- the length is the length _of the segment_, whereas when you add a
630
- segment to an evbuffer, the offset is _within the segment_ and the
631
- length is the length of the _part of the segment you want to use.
632
-
633
- In other words, if you have a 10 KiB file, and you create an
634
- evbuffer_file_segment for it with offset 20 and length 1000, it will
635
- refer to bytes 20..1019 inclusive. If you then pass this segment to
636
- evbuffer_add_file_segment and specify an offset of 20 and a length of
637
- 50, you will be adding bytes 40..99 inclusive.
638
-
639
- @param buf the evbuffer to append to
640
- @param seg the segment to add
641
- @param offset the offset within the segment to start from
642
- @param length the amount of data to add, or -1 to add it all.
643
- @return 0 on success, -1 on failure.
644
- */
645
- EVENT2_EXPORT_SYMBOL
646
- int evbuffer_add_file_segment(struct evbuffer *buf,
647
- struct evbuffer_file_segment *seg, ev_off_t offset, ev_off_t length);
648
-
649
- /**
650
- Append a formatted string to the end of an evbuffer.
651
-
652
- The string is formated as printf.
653
-
654
- @param buf the evbuffer that will be appended to
655
- @param fmt a format string
656
- @param ... arguments that will be passed to printf(3)
657
- @return The number of bytes added if successful, or -1 if an error occurred.
658
-
659
- @see evutil_printf(), evbuffer_add_vprintf()
660
- */
661
- EVENT2_EXPORT_SYMBOL
662
- int evbuffer_add_printf(struct evbuffer *buf, const char *fmt, ...)
663
- #ifdef __GNUC__
664
- __attribute__((format(printf, 2, 3)))
665
- #endif
666
- ;
667
-
668
- /**
669
- Append a va_list formatted string to the end of an evbuffer.
670
-
671
- @param buf the evbuffer that will be appended to
672
- @param fmt a format string
673
- @param ap a varargs va_list argument array that will be passed to vprintf(3)
674
- @return The number of bytes added if successful, or -1 if an error occurred.
675
- */
676
- EVENT2_EXPORT_SYMBOL
677
- int evbuffer_add_vprintf(struct evbuffer *buf, const char *fmt, va_list ap)
678
- #ifdef __GNUC__
679
- __attribute__((format(printf, 2, 0)))
680
- #endif
681
- ;
682
-
683
-
684
- /**
685
- Remove a specified number of bytes data from the beginning of an evbuffer.
686
-
687
- @param buf the evbuffer to be drained
688
- @param len the number of bytes to drain from the beginning of the buffer
689
- @return 0 on success, -1 on failure.
690
- */
691
- EVENT2_EXPORT_SYMBOL
692
- int evbuffer_drain(struct evbuffer *buf, size_t len);
693
-
694
-
695
- /**
696
- Write the contents of an evbuffer to a file descriptor.
697
-
698
- The evbuffer will be drained after the bytes have been successfully written.
699
-
700
- @param buffer the evbuffer to be written and drained
701
- @param fd the file descriptor to be written to
702
- @return the number of bytes written, or -1 if an error occurred
703
- @see evbuffer_read()
704
- */
705
- EVENT2_EXPORT_SYMBOL
706
- int evbuffer_write(struct evbuffer *buffer, evutil_socket_t fd);
707
-
708
- /**
709
- Write some of the contents of an evbuffer to a file descriptor.
710
-
711
- The evbuffer will be drained after the bytes have been successfully written.
712
-
713
- @param buffer the evbuffer to be written and drained
714
- @param fd the file descriptor to be written to
715
- @param howmuch the largest allowable number of bytes to write, or -1
716
- to write as many bytes as we can.
717
- @return the number of bytes written, or -1 if an error occurred
718
- @see evbuffer_read()
719
- */
720
- EVENT2_EXPORT_SYMBOL
721
- int evbuffer_write_atmost(struct evbuffer *buffer, evutil_socket_t fd,
722
- ev_ssize_t howmuch);
723
-
724
- /**
725
- Read from a file descriptor and store the result in an evbuffer.
726
-
727
- @param buffer the evbuffer to store the result
728
- @param fd the file descriptor to read from
729
- @param howmuch the number of bytes to be read. If the given number is negative
730
- or out of maximum bytes per one read, as many bytes as we can will be read.
731
- @return the number of bytes read, or -1 if an error occurred
732
- @see evbuffer_write()
733
- */
734
- EVENT2_EXPORT_SYMBOL
735
- int evbuffer_read(struct evbuffer *buffer, evutil_socket_t fd, int howmuch);
736
-
737
- /**
738
- Search for a string within an evbuffer.
739
-
740
- @param buffer the evbuffer to be searched
741
- @param what the string to be searched for
742
- @param len the length of the search string
743
- @param start NULL or a pointer to a valid struct evbuffer_ptr.
744
- @return a struct evbuffer_ptr whose 'pos' field has the offset of the
745
- first occurrence of the string in the buffer after 'start'. The 'pos'
746
- field of the result is -1 if the string was not found.
747
- */
748
- EVENT2_EXPORT_SYMBOL
749
- struct evbuffer_ptr evbuffer_search(struct evbuffer *buffer, const char *what, size_t len, const struct evbuffer_ptr *start);
750
-
751
- /**
752
- Search for a string within part of an evbuffer.
753
-
754
- @param buffer the evbuffer to be searched
755
- @param what the string to be searched for
756
- @param len the length of the search string
757
- @param start NULL or a pointer to a valid struct evbuffer_ptr that
758
- indicates where we should start searching.
759
- @param end NULL or a pointer to a valid struct evbuffer_ptr that
760
- indicates where we should stop searching.
761
- @return a struct evbuffer_ptr whose 'pos' field has the offset of the
762
- first occurrence of the string in the buffer after 'start'. The 'pos'
763
- field of the result is -1 if the string was not found.
764
- */
765
- EVENT2_EXPORT_SYMBOL
766
- struct evbuffer_ptr evbuffer_search_range(struct evbuffer *buffer, const char *what, size_t len, const struct evbuffer_ptr *start, const struct evbuffer_ptr *end);
767
-
768
- /**
769
- Defines how to adjust an evbuffer_ptr by evbuffer_ptr_set()
770
-
771
- @see evbuffer_ptr_set() */
772
- enum evbuffer_ptr_how {
773
- /** Sets the pointer to the position; can be called on with an
774
- uninitialized evbuffer_ptr. */
775
- EVBUFFER_PTR_SET,
776
- /** Advances the pointer by adding to the current position. */
777
- EVBUFFER_PTR_ADD
778
- };
779
-
780
- /**
781
- Sets the search pointer in the buffer to position.
782
-
783
- There are two ways to use this function: you can call
784
- evbuffer_ptr_set(buf, &pos, N, EVBUFFER_PTR_SET)
785
- to move 'pos' to a position 'N' bytes after the start of the buffer, or
786
- evbuffer_ptr_set(buf, &pos, N, EVBUFFER_PTR_ADD)
787
- to move 'pos' forward by 'N' bytes.
788
-
789
- If evbuffer_ptr is not initialized, this function can only be called
790
- with EVBUFFER_PTR_SET.
791
-
792
- An evbuffer_ptr can represent any position from the start of the buffer to
793
- a position immediately after the end of the buffer.
794
-
795
- @param buffer the evbuffer to be search
796
- @param ptr a pointer to a struct evbuffer_ptr
797
- @param position the position at which to start the next search
798
- @param how determines how the pointer should be manipulated.
799
- @returns 0 on success or -1 otherwise
800
- */
801
- EVENT2_EXPORT_SYMBOL
802
- int
803
- evbuffer_ptr_set(struct evbuffer *buffer, struct evbuffer_ptr *ptr,
804
- size_t position, enum evbuffer_ptr_how how);
805
-
806
- /**
807
- Search for an end-of-line string within an evbuffer.
808
-
809
- @param buffer the evbuffer to be searched
810
- @param start NULL or a pointer to a valid struct evbuffer_ptr to start
811
- searching at.
812
- @param eol_len_out If non-NULL, the pointed-to value will be set to
813
- the length of the end-of-line string.
814
- @param eol_style The kind of EOL to look for; see evbuffer_readln() for
815
- more information
816
- @return a struct evbuffer_ptr whose 'pos' field has the offset of the
817
- first occurrence EOL in the buffer after 'start'. The 'pos'
818
- field of the result is -1 if the string was not found.
819
- */
820
- EVENT2_EXPORT_SYMBOL
821
- struct evbuffer_ptr evbuffer_search_eol(struct evbuffer *buffer,
822
- struct evbuffer_ptr *start, size_t *eol_len_out,
823
- enum evbuffer_eol_style eol_style);
824
-
825
- /** Function to peek at data inside an evbuffer without removing it or
826
- copying it out.
827
-
828
- Pointers to the data are returned by filling the 'vec_out' array
829
- with pointers to one or more extents of data inside the buffer.
830
-
831
- The total data in the extents that you get back may be more than
832
- you requested (if there is more data last extent than you asked
833
- for), or less (if you do not provide enough evbuffer_iovecs, or if
834
- the buffer does not have as much data as you asked to see).
835
-
836
- @param buffer the evbuffer to peek into,
837
- @param len the number of bytes to try to peek. If len is negative, we
838
- will try to fill as much of vec_out as we can. If len is negative
839
- and vec_out is not provided, we return the number of evbuffer_iovecs
840
- that would be needed to get all the data in the buffer.
841
- @param start_at an evbuffer_ptr indicating the point at which we
842
- should start looking for data. NULL means, "At the start of the
843
- buffer."
844
- @param vec_out an array of evbuffer_iovec
845
- @param n_vec the length of vec_out. If 0, we only count how many
846
- extents would be necessary to point to the requested amount of
847
- data.
848
- @return The number of extents needed. This may be less than n_vec
849
- if we didn't need all the evbuffer_iovecs we were given, or more
850
- than n_vec if we would need more to return all the data that was
851
- requested.
852
- */
853
- EVENT2_EXPORT_SYMBOL
854
- int evbuffer_peek(struct evbuffer *buffer, ev_ssize_t len,
855
- struct evbuffer_ptr *start_at,
856
- struct evbuffer_iovec *vec_out, int n_vec);
857
-
858
-
859
- /** Structure passed to an evbuffer_cb_func evbuffer callback
860
-
861
- @see evbuffer_cb_func, evbuffer_add_cb()
862
- */
863
- struct evbuffer_cb_info {
864
- /** The number of bytes in this evbuffer when callbacks were last
865
- * invoked. */
866
- size_t orig_size;
867
- /** The number of bytes added since callbacks were last invoked. */
868
- size_t n_added;
869
- /** The number of bytes removed since callbacks were last invoked. */
870
- size_t n_deleted;
871
- };
872
-
873
- /** Type definition for a callback that is invoked whenever data is added or
874
- removed from an evbuffer.
875
-
876
- An evbuffer may have one or more callbacks set at a time. The order
877
- in which they are executed is undefined.
878
-
879
- A callback function may add more callbacks, or remove itself from the
880
- list of callbacks, or add or remove data from the buffer. It may not
881
- remove another callback from the list.
882
-
883
- If a callback adds or removes data from the buffer or from another
884
- buffer, this can cause a recursive invocation of your callback or
885
- other callbacks. If you ask for an infinite loop, you might just get
886
- one: watch out!
887
-
888
- @param buffer the buffer whose size has changed
889
- @param info a structure describing how the buffer changed.
890
- @param arg a pointer to user data
891
- */
892
- typedef void (*evbuffer_cb_func)(struct evbuffer *buffer, const struct evbuffer_cb_info *info, void *arg);
893
-
894
- struct evbuffer_cb_entry;
895
- /** Add a new callback to an evbuffer.
896
-
897
- Subsequent calls to evbuffer_add_cb() add new callbacks. To remove this
898
- callback, call evbuffer_remove_cb or evbuffer_remove_cb_entry.
899
-
900
- @param buffer the evbuffer to be monitored
901
- @param cb the callback function to invoke when the evbuffer is modified,
902
- or NULL to remove all callbacks.
903
- @param cbarg an argument to be provided to the callback function
904
- @return a handle to the callback on success, or NULL on failure.
905
- */
906
- EVENT2_EXPORT_SYMBOL
907
- struct evbuffer_cb_entry *evbuffer_add_cb(struct evbuffer *buffer, evbuffer_cb_func cb, void *cbarg);
908
-
909
- /** Remove a callback from an evbuffer, given a handle returned from
910
- evbuffer_add_cb.
911
-
912
- Calling this function invalidates the handle.
913
-
914
- @return 0 if a callback was removed, or -1 if no matching callback was
915
- found.
916
- */
917
- EVENT2_EXPORT_SYMBOL
918
- int evbuffer_remove_cb_entry(struct evbuffer *buffer,
919
- struct evbuffer_cb_entry *ent);
920
-
921
- /** Remove a callback from an evbuffer, given the function and argument
922
- used to add it.
923
-
924
- @return 0 if a callback was removed, or -1 if no matching callback was
925
- found.
926
- */
927
- EVENT2_EXPORT_SYMBOL
928
- int evbuffer_remove_cb(struct evbuffer *buffer, evbuffer_cb_func cb, void *cbarg);
929
-
930
- /** If this flag is not set, then a callback is temporarily disabled, and
931
- * should not be invoked.
932
- *
933
- * @see evbuffer_cb_set_flags(), evbuffer_cb_clear_flags()
934
- */
935
- #define EVBUFFER_CB_ENABLED 1
936
-
937
- /** Change the flags that are set for a callback on a buffer by adding more.
938
-
939
- @param buffer the evbuffer that the callback is watching.
940
- @param cb the callback whose status we want to change.
941
- @param flags EVBUFFER_CB_ENABLED to re-enable the callback.
942
- @return 0 on success, -1 on failure.
943
- */
944
- EVENT2_EXPORT_SYMBOL
945
- int evbuffer_cb_set_flags(struct evbuffer *buffer,
946
- struct evbuffer_cb_entry *cb, ev_uint32_t flags);
947
-
948
- /** Change the flags that are set for a callback on a buffer by removing some
949
-
950
- @param buffer the evbuffer that the callback is watching.
951
- @param cb the callback whose status we want to change.
952
- @param flags EVBUFFER_CB_ENABLED to disable the callback.
953
- @return 0 on success, -1 on failure.
954
- */
955
- EVENT2_EXPORT_SYMBOL
956
- int evbuffer_cb_clear_flags(struct evbuffer *buffer,
957
- struct evbuffer_cb_entry *cb, ev_uint32_t flags);
958
-
959
- #if 0
960
- /** Postpone calling a given callback until unsuspend is called later.
961
-
962
- This is different from disabling the callback, since the callback will get
963
- invoked later if the buffer size changes between now and when we unsuspend
964
- it.
965
-
966
- @param the buffer that the callback is watching.
967
- @param cb the callback we want to suspend.
968
- */
969
- EVENT2_EXPORT_SYMBOL
970
- void evbuffer_cb_suspend(struct evbuffer *buffer, struct evbuffer_cb_entry *cb);
971
- /** Stop postponing a callback that we postponed with evbuffer_cb_suspend.
972
-
973
- If data was added to or removed from the buffer while the callback was
974
- suspended, the callback will get called once now.
975
-
976
- @param the buffer that the callback is watching.
977
- @param cb the callback we want to stop suspending.
978
- */
979
- EVENT2_EXPORT_SYMBOL
980
- void evbuffer_cb_unsuspend(struct evbuffer *buffer, struct evbuffer_cb_entry *cb);
981
- #endif
982
-
983
- /**
984
- Makes the data at the beginning of an evbuffer contiguous.
985
-
986
- @param buf the evbuffer to make contiguous
987
- @param size the number of bytes to make contiguous, or -1 to make the
988
- entire buffer contiguous.
989
- @return a pointer to the contiguous memory array, or NULL if param size
990
- requested more data than is present in the buffer.
991
- */
992
-
993
- EVENT2_EXPORT_SYMBOL
994
- unsigned char *evbuffer_pullup(struct evbuffer *buf, ev_ssize_t size);
995
-
996
- /**
997
- Prepends data to the beginning of the evbuffer
998
-
999
- @param buf the evbuffer to which to prepend data
1000
- @param data a pointer to the memory to prepend
1001
- @param size the number of bytes to prepend
1002
- @return 0 if successful, or -1 otherwise
1003
- */
1004
-
1005
- EVENT2_EXPORT_SYMBOL
1006
- int evbuffer_prepend(struct evbuffer *buf, const void *data, size_t size);
1007
-
1008
- /**
1009
- Prepends all data from the src evbuffer to the beginning of the dst
1010
- evbuffer.
1011
-
1012
- @param dst the evbuffer to which to prepend data
1013
- @param src the evbuffer to prepend; it will be emptied as a result
1014
- @return 0 if successful, or -1 otherwise
1015
- */
1016
- EVENT2_EXPORT_SYMBOL
1017
- int evbuffer_prepend_buffer(struct evbuffer *dst, struct evbuffer* src);
1018
-
1019
- /**
1020
- Prevent calls that modify an evbuffer from succeeding. A buffer may
1021
- frozen at the front, at the back, or at both the front and the back.
1022
-
1023
- If the front of a buffer is frozen, operations that drain data from
1024
- the front of the buffer, or that prepend data to the buffer, will
1025
- fail until it is unfrozen. If the back a buffer is frozen, operations
1026
- that append data from the buffer will fail until it is unfrozen.
1027
-
1028
- @param buf The buffer to freeze
1029
- @param at_front If true, we freeze the front of the buffer. If false,
1030
- we freeze the back.
1031
- @return 0 on success, -1 on failure.
1032
- */
1033
- EVENT2_EXPORT_SYMBOL
1034
- int evbuffer_freeze(struct evbuffer *buf, int at_front);
1035
- /**
1036
- Re-enable calls that modify an evbuffer.
1037
-
1038
- @param buf The buffer to un-freeze
1039
- @param at_front If true, we unfreeze the front of the buffer. If false,
1040
- we unfreeze the back.
1041
- @return 0 on success, -1 on failure.
1042
- */
1043
- EVENT2_EXPORT_SYMBOL
1044
- int evbuffer_unfreeze(struct evbuffer *buf, int at_front);
1045
-
1046
- struct event_base;
1047
- /**
1048
- Force all the callbacks on an evbuffer to be run, not immediately after
1049
- the evbuffer is altered, but instead from inside the event loop.
1050
-
1051
- This can be used to serialize all the callbacks to a single thread
1052
- of execution.
1053
- */
1054
- EVENT2_EXPORT_SYMBOL
1055
- int evbuffer_defer_callbacks(struct evbuffer *buffer, struct event_base *base);
1056
-
1057
- /**
1058
- Append data from 1 or more iovec's to an evbuffer
1059
-
1060
- Calculates the number of bytes needed for an iovec structure and guarantees
1061
- all data will fit into a single chain. Can be used in lieu of functionality
1062
- which calls evbuffer_add() constantly before being used to increase
1063
- performance.
1064
-
1065
- @param buffer the destination buffer
1066
- @param vec the source iovec
1067
- @param n_vec the number of iovec structures.
1068
- @return the number of bytes successfully written to the output buffer.
1069
- */
1070
- EVENT2_EXPORT_SYMBOL
1071
- size_t evbuffer_add_iovec(struct evbuffer * buffer, struct evbuffer_iovec * vec, int n_vec);
1072
-
1073
- #ifdef __cplusplus
1074
- }
1075
- #endif
1076
-
1077
- #endif /* EVENT2_BUFFER_H_INCLUDED_ */