From: Willy Tarreau Date: Wed, 14 Nov 2018 13:01:40 +0000 (+0100) Subject: MINOR: stream-int: add new functions si_{rx,tx}_{blocked,endp_ready}() X-Git-Tag: v1.9-dev7~101 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=78dcacef5c6d2338781336fc45224138843e31de;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h index ad0fe031e8..6d46381557 100644 --- a/include/proto/stream_interface.h +++ b/include/proto/stream_interface.h @@ -247,6 +247,18 @@ static inline void si_applet_release(struct stream_interface *si) 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 */ 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); } +/* 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 */ static inline void si_want_get(struct stream_interface *si) {