Add non-closing lwevent_free()
This commit is contained in:
parent
cfcea63f7a
commit
27133a87ed
|
@ -47,11 +47,11 @@ struct lwevent* lwevent_new(int fd, int events, lwevent_callback callback)
|
|||
|
||||
|
||||
|
||||
/* lwevent_free()
|
||||
/* lwevent_free_and_close()
|
||||
* Mark `ev' as invalid, closing its file descriptor and calling the destructor (if there is one).
|
||||
* If the object is already invalid, or is null, do nothing.
|
||||
*/
|
||||
void lwevent_free(struct lwevent* ev)
|
||||
void lwevent_free_and_close(struct lwevent* ev)
|
||||
{
|
||||
if(!ev || ev->fd == -1) return;
|
||||
|
||||
|
@ -63,6 +63,24 @@ void lwevent_free(struct lwevent* ev)
|
|||
|
||||
|
||||
|
||||
/* lwevent_free()
|
||||
* Mark `ev' as invalid, calling the destructor (if there is one). If the object is already
|
||||
* invalid, or is null, do nothing. Also remove `ev->fd' from epoll's consideration.
|
||||
*/
|
||||
void lwevent_free(struct lwevent* ev)
|
||||
{
|
||||
int dummy;
|
||||
|
||||
if(!ev || ev->fd == -1) return;
|
||||
|
||||
/* call destructor, deregister from epoll, mark as invalid */
|
||||
if(ev->dtor) ev->dtor(ev);
|
||||
dummy = lwevent_deactivate(ev);
|
||||
_lwevent_invalid(ev);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* lwevent_deactivate()
|
||||
* Temporarily deactivate `ev'. Calls epoll_ctl(EPOLL_CTL_DEL).
|
||||
*/
|
||||
|
|
|
@ -98,6 +98,20 @@ without consequence. At the end of the event loop, once no more callbacks are qu
|
|||
objects are freed. This means that you cannot continue to refer to invalid objects after a completed
|
||||
call to lwevent_wait().
|
||||
|
||||
*/
|
||||
void lwevent_free_and_close(struct lwevent* ev);
|
||||
|
||||
|
||||
|
||||
/*! \brief Free an event structure.
|
||||
|
||||
\param ev Event structure. May be 0.
|
||||
|
||||
This function will call the registered destructor of \a ev (see \ref fdparams) and free any memory
|
||||
used by \a ev. It may be called at any time in the event loop. If called with a null argument, it is
|
||||
a no-op. The file descriptor associated with \a ev is not modified (but it is deregistered from the
|
||||
event loop).
|
||||
|
||||
*/
|
||||
void lwevent_free(struct lwevent* ev);
|
||||
|
||||
|
|
Loading…
Reference in New Issue