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

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



That's right, you can use event_free() to free a timer. If your event loop is still active , I would recommed a evtimer_del() before event_free().

--
Sanjiv

On Fri, Apr 20, 2012 at 7:17 AM, Dawen Rie <dawenhing@xxxxxxx> wrote:
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.



--
Sanjiv Raj


Marvin: I've been talking to the ship's computer.
Arthur: And?
Marvin: It hates me.