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 <dawenh...@126.com> 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" <ni...@freehaven.net> 写入: > > >On Sat, Apr 14, 2012 at 4:15 AM, Dawen Rie <dawenh...@126.com> 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 majord...@freehaven.net with > >unsubscribe libevent-users in the body. > > > > *********************************************************************** > To unsubscribe, send an e-mail to majord...@freehaven.net 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.