mirror of
https://github.com/libevent/libevent.git
synced 2025-01-09 00:56:20 +08:00
Merge pull request #168 from ufo2243/master
make bufferevent_getwatermark api more robust
This commit is contained in:
commit
c243dbf4c8
@ -615,25 +615,30 @@ bufferevent_setwatermark(struct bufferevent *bufev, short events,
|
||||
BEV_UNLOCK(bufev);
|
||||
}
|
||||
|
||||
void
|
||||
int
|
||||
bufferevent_getwatermark(struct bufferevent *bufev, short events,
|
||||
size_t *lowmark, size_t *highmark)
|
||||
{
|
||||
BEV_LOCK(bufev);
|
||||
if (events == EV_WRITE) {
|
||||
BEV_LOCK(bufev);
|
||||
if (lowmark)
|
||||
*lowmark = bufev->wm_write.low;
|
||||
if (highmark)
|
||||
*highmark = bufev->wm_write.high;
|
||||
BEV_UNLOCK(bufev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (events == EV_READ) {
|
||||
BEV_LOCK(bufev);
|
||||
if (lowmark)
|
||||
*lowmark = bufev->wm_read.low;
|
||||
if (highmark)
|
||||
*highmark = bufev->wm_read.high;
|
||||
BEV_UNLOCK(bufev);
|
||||
return 0;
|
||||
}
|
||||
BEV_UNLOCK(bufev);
|
||||
return -1;
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -535,8 +535,9 @@ void bufferevent_setwatermark(struct bufferevent *bufev, short events,
|
||||
size_t lowmark, size_t highmark);
|
||||
|
||||
/**
|
||||
Retrieves the watermarks for read or write events. Result is undefined if
|
||||
events contains both EV_READ and EV_WRITE.
|
||||
Retrieves the watermarks for read or write events.
|
||||
Returns non-zero if events contains not only EV_READ or EV_WRITE.
|
||||
Returns zero if events equal EV_READ or EV_WRITE
|
||||
|
||||
@param bufev the bufferevent to be examined
|
||||
@param events EV_READ or EV_WRITE
|
||||
@ -544,7 +545,7 @@ void bufferevent_setwatermark(struct bufferevent *bufev, short events,
|
||||
@param highmark receives the high watermark if not NULL
|
||||
*/
|
||||
EVENT2_EXPORT_SYMBOL
|
||||
void bufferevent_getwatermark(struct bufferevent *bufev, short events,
|
||||
int bufferevent_getwatermark(struct bufferevent *bufev, short events,
|
||||
size_t *lowmark, size_t *highmark);
|
||||
|
||||
/**
|
||||
|
@ -287,6 +287,9 @@ test_bufferevent_watermarks_impl(int use_pair)
|
||||
tt_int_op(low, ==, 100);
|
||||
tt_int_op(high, ==, 2000);
|
||||
|
||||
int r = bufferevent_getwatermark(bev1, EV_WRITE | EV_READ, &low, &high);
|
||||
tt_int_op(r, !=, 0);
|
||||
|
||||
bufferevent_write(bev1, buffer, sizeof(buffer));
|
||||
|
||||
event_dispatch();
|
||||
|
Loading…
x
Reference in New Issue
Block a user