mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-12 05:48:51 -04:00
Merge branch 'master' into issue237
This commit is contained in:
commit
d9f6140b6b
@ -327,14 +327,17 @@ int bufferevent_disable_hard_(struct bufferevent *bufev, short event);
|
|||||||
/** Internal: Set up locking on a bufferevent. If lock is set, use it.
|
/** Internal: Set up locking on a bufferevent. If lock is set, use it.
|
||||||
* Otherwise, use a new lock. */
|
* Otherwise, use a new lock. */
|
||||||
int bufferevent_enable_locking_(struct bufferevent *bufev, void *lock);
|
int bufferevent_enable_locking_(struct bufferevent *bufev, void *lock);
|
||||||
/** Internal: Increment the reference count on bufev. */
|
/** Internal: backwards compat macro for the now public function
|
||||||
void bufferevent_incref_(struct bufferevent *bufev);
|
* Increment the reference count on bufev. */
|
||||||
|
#define bufferevent_incref_(bufev) bufferevent_incref(bufev)
|
||||||
/** Internal: Lock bufev and increase its reference count.
|
/** Internal: Lock bufev and increase its reference count.
|
||||||
* unlocking it otherwise. */
|
* unlocking it otherwise. */
|
||||||
void bufferevent_incref_and_lock_(struct bufferevent *bufev);
|
void bufferevent_incref_and_lock_(struct bufferevent *bufev);
|
||||||
/** Internal: Decrement the reference count on bufev. Returns 1 if it freed
|
/** Internal: backwards compat macro for the now public function
|
||||||
|
* Decrement the reference count on bufev. Returns 1 if it freed
|
||||||
* the bufferevent.*/
|
* the bufferevent.*/
|
||||||
int bufferevent_decref_(struct bufferevent *bufev);
|
#define bufferevent_decref_(bufev) bufferevent_decref(bufev)
|
||||||
|
|
||||||
/** Internal: Drop the reference count on bufev, freeing as necessary, and
|
/** Internal: Drop the reference count on bufev, freeing as necessary, and
|
||||||
* unlocking it otherwise. Returns 1 if it freed the bufferevent. */
|
* unlocking it otherwise. Returns 1 if it freed the bufferevent. */
|
||||||
int bufferevent_decref_and_unlock_(struct bufferevent *bufev);
|
int bufferevent_decref_and_unlock_(struct bufferevent *bufev);
|
||||||
|
@ -777,7 +777,7 @@ bufferevent_finalize_cb_(struct event_callback *evcb, void *arg_)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
bufferevent_decref_(struct bufferevent *bufev)
|
bufferevent_decref(struct bufferevent *bufev)
|
||||||
{
|
{
|
||||||
BEV_LOCK(bufev);
|
BEV_LOCK(bufev);
|
||||||
return bufferevent_decref_and_unlock_(bufev);
|
return bufferevent_decref_and_unlock_(bufev);
|
||||||
@ -793,11 +793,15 @@ bufferevent_free(struct bufferevent *bufev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
bufferevent_incref_(struct bufferevent *bufev)
|
bufferevent_incref(struct bufferevent *bufev)
|
||||||
{
|
{
|
||||||
struct bufferevent_private *bufev_private =
|
struct bufferevent_private *bufev_private =
|
||||||
EVUTIL_UPCAST(bufev, struct bufferevent_private, bev);
|
EVUTIL_UPCAST(bufev, struct bufferevent_private, bev);
|
||||||
|
|
||||||
|
/* XXX: now that this function is public, we might want to
|
||||||
|
* - return the count from this function
|
||||||
|
* - create a new function to atomically grab the current refcount
|
||||||
|
*/
|
||||||
BEV_LOCK(bufev);
|
BEV_LOCK(bufev);
|
||||||
++bufev_private->refcnt;
|
++bufev_private->refcnt;
|
||||||
BEV_UNLOCK(bufev);
|
BEV_UNLOCK(bufev);
|
||||||
|
@ -562,6 +562,32 @@ void bufferevent_lock(struct bufferevent *bufev);
|
|||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
void bufferevent_unlock(struct bufferevent *bufev);
|
void bufferevent_unlock(struct bufferevent *bufev);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Public interface to manually increase the reference count of a bufferevent
|
||||||
|
* this is useful in situations where a user may reference the bufferevent
|
||||||
|
* somewhere eles (unknown to libevent)
|
||||||
|
*
|
||||||
|
* @param bufev the bufferevent to increase the refcount on
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
|
void bufferevent_incref(struct bufferevent *bufev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Public interface to manually decrement the reference count of a bufferevent
|
||||||
|
*
|
||||||
|
* Warning: make sure you know what you're doing. This is mainly used in
|
||||||
|
* conjunction with bufferevent_incref(). This will free up all data associated
|
||||||
|
* with a bufferevent if the reference count hits 0.
|
||||||
|
*
|
||||||
|
* @param bufev the bufferevent to decrement the refcount on
|
||||||
|
*
|
||||||
|
* @return 1 if the bufferevent was freed, otherwise 0 (still referenced)
|
||||||
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
|
int bufferevent_decref(struct bufferevent *bufev);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Flags that can be passed into filters to let them know how to
|
Flags that can be passed into filters to let them know how to
|
||||||
deal with the incoming data.
|
deal with the incoming data.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user