mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-06 18:58:09 -04:00
add bufferevent_read_buffer function
svn:r728
This commit is contained in:
parent
fe2e7307f3
commit
89f63b205d
@ -70,6 +70,7 @@ Changes in current version:
|
||||
o Make all event_tagging interfaces threadsafe.
|
||||
o Rename internal memory management functions.
|
||||
o New functions (event_assign, event_new, event_free) for use by apps that want to be safely threadsafe, or want to remain ignorant of the contents of struct event.
|
||||
o introduce bufferevent_read_buffer; allows reading without memory copy.
|
||||
|
||||
Changes in 1.4.0:
|
||||
o allow \r or \n individually to separate HTTP headers instead of the standard "\r\n"; from Charles Kerr.
|
||||
|
@ -325,6 +325,12 @@ bufferevent_read(struct bufferevent *bufev, void *data, size_t size)
|
||||
return (evbuffer_remove(bufev->input, data, size));
|
||||
}
|
||||
|
||||
int
|
||||
bufferevent_read_buffer(struct bufferevent *bufev, struct evbuffer *buf)
|
||||
{
|
||||
return (evbuffer_add_buffer(buf, bufev->input));
|
||||
}
|
||||
|
||||
int
|
||||
bufferevent_enable(struct bufferevent *bufev, short event)
|
||||
{
|
||||
|
@ -181,6 +181,16 @@ int bufferevent_write_buffer(struct bufferevent *bufev, struct evbuffer *buf);
|
||||
*/
|
||||
size_t bufferevent_read(struct bufferevent *bufev, void *data, size_t size);
|
||||
|
||||
/**
|
||||
Read data from a bufferevent buffer into an evbuffer. This avoids
|
||||
memory copies.
|
||||
|
||||
@param bufev the bufferevent to be read from
|
||||
@param buf the evbuffer to which to add data
|
||||
@return 0 if successful, or -1 if an error occurred.
|
||||
*/
|
||||
int bufferevent_read_buffer(struct bufferevent *bufev, struct evbuffer *buf);
|
||||
|
||||
/**
|
||||
Enable a bufferevent.
|
||||
|
||||
|
@ -1306,8 +1306,18 @@ static void
|
||||
readcb(struct bufferevent *bev, void *arg)
|
||||
{
|
||||
if (EVBUFFER_LENGTH(bev->input) == 8333) {
|
||||
struct evbuffer *evbuf = evbuffer_new();
|
||||
assert(evbuf != NULL);
|
||||
|
||||
/* gratuitous test of bufferevent_read_buffer */
|
||||
bufferevent_read_buffer(bev, evbuf);
|
||||
|
||||
bufferevent_disable(bev, EV_READ);
|
||||
test_ok++;
|
||||
|
||||
if (EVBUFFER_LENGTH(evbuf) == 8333)
|
||||
test_ok++;
|
||||
|
||||
evbuffer_free(evbuf);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user