[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [Libevent-users] How can I write exact length of a evbuffer?



Thank you very much, my problem solved!
Can I ask other question?
I find the evtimer_* macro as follow. It has evtimer_new but no
evtimer_free? Is it means I don't need to free a evtimer_new return
pointer? But I notice evtimer_new was defined as event_new, so I think it
must be free by event_free, is it write? I had check the
sample/timer_test.c, It just demo a stack base usage.

/**
   @name evtimer_* macros

    Aliases for working with one-shot timer events */
/**@{*/
#define evtimer_assign(ev, b, cb, arg) \
	event_assign((ev), (b), -1, 0, (cb), (arg))
#define evtimer_new(b, cb, arg)	       event_new((b), -1, 0, (cb), (arg))
#define evtimer_add(ev, tv)		event_add((ev), (tv))
#define evtimer_del(ev)			event_del(ev)
#define evtimer_pending(ev, tv)		event_pending((ev), EV_TIMEOUT, (tv))
#define evtimer_initialized(ev)		event_initialized(ev)
/**@}*/




在 12-4-19 下午11:02, "Nick Mathewson" <nickm@xxxxxxxxxxxxx> 写入:

>On Sat, Apr 14, 2012 at 4:15 AM, Dawen Rie <dawenhing@xxxxxxx> wrote:
>> Hello everybody. I am a new user of libevent. I can't find the correct
>>API
>> to do my work.
>> I had found the API:
>>
>> int bufferevent_write_buffer(struct bufferevent *bufev, struct evbuffer
>> *buf);
>> It will send all data of evbuffer. But I just want to send a special
>> length not all.
>>
>> And API:
>> int bufferevent_write(struct bufferevent *bufev, const void *data,
>>size_t
>> size);
>>
>>
>> It require me copy out the data from evbuffer, I think it's
>>inefficiency.
>>
>> So, is there andy API like:
>> int bufferevent_write_buffer(struct bufferevent *bufev, struct evbuffer
>> *buf, size_t size);
>>
>> It just send size of data in but?
>
>Hi!
>
>What you want to be looking at first is bufferevent_get_output().  It
>returns an output evbuffer that you can add data to manually.  The
>bufferevent_write() and bufferevent_write_buffer() functions are thin
>wrappers around bufferevent_get_output() and one of the evbuffer_*
>functions.
>
>So now the question becomes, "how can I add move (but not all) of the
>data from one evbuffer to another?"
>
>For that, see evbuffer_remove_buffer().
>
>For more information, you might want to read the (perpetually
>work-in-progress) reference manual at
>http://www.wangafu.net/~nickm/libevent-book/
>
>yrs,
>-- 
>Nick
>***********************************************************************
>To unsubscribe, send an e-mail to majordomo@xxxxxxxxxxxxx with
>unsubscribe libevent-users    in the body.



***********************************************************************
To unsubscribe, send an e-mail to majordomo@xxxxxxxxxxxxx with
unsubscribe libevent-users    in the body.