MINOR: stream-int: add new functions si_{rx,tx}_{blocked,endp_ready}()

The first ones are used to figure if a direction is blocked on the
stream interface for anything but the end point. The second ones are
used to detect if the end point is ready to receive/transmit. They
should be used instead of directly fiddling with the existing bits.
This commit is contained in:
Willy Tarreau 2018-11-14 14:01:40 +01:00
parent 94f7907d65
commit 78dcacef5c
1 changed files with 24 additions and 0 deletions

View File

@ -247,6 +247,18 @@ static inline void si_applet_release(struct stream_interface *si)
appctx->applet->release(appctx); appctx->applet->release(appctx);
} }
/* Returns non-zero if the stream interface's Rx path is blocked */
static inline int si_rx_blocked(const struct stream_interface *si)
{
return !!(si->flags & SI_FL_RXBLK_ANY);
}
/* Returns non-zero if the stream interface's endpoint is ready to receive */
static inline int si_rx_endp_ready(const struct stream_interface *si)
{
return !(si->flags & SI_FL_RX_WAIT_EP);
}
/* Report that a stream interface wants to put some data into the input buffer */ /* Report that a stream interface wants to put some data into the input buffer */
static inline void si_want_put(struct stream_interface *si) static inline void si_want_put(struct stream_interface *si)
{ {
@ -271,6 +283,18 @@ static inline void si_done_put(struct stream_interface *si)
si->flags &= ~(SI_FL_WANT_PUT | SI_FL_RXBLK_ROOM); si->flags &= ~(SI_FL_WANT_PUT | SI_FL_RXBLK_ROOM);
} }
/* Returns non-zero if the stream interface's Rx path is blocked */
static inline int si_tx_blocked(const struct stream_interface *si)
{
return !!(si->flags & SI_FL_WAIT_DATA);
}
/* Returns non-zero if the stream interface's endpoint is ready to transmit */
static inline int si_tx_endp_ready(const struct stream_interface *si)
{
return (si->flags & SI_FL_WANT_GET);
}
/* Report that a stream interface wants to get some data from the output buffer */ /* Report that a stream interface wants to get some data from the output buffer */
static inline void si_want_get(struct stream_interface *si) static inline void si_want_get(struct stream_interface *si)
{ {