From: Christopher Faulet Date: Thu, 22 Nov 2018 10:23:23 +0000 (+0100) Subject: MINOR: htx: Add function to iterate on an HTX message using HTX blocks X-Git-Tag: v1.9-dev9~74 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d16b0a7b2dce5e90a11a74afa13b8d1fd5e7c5e4;p=thirdparty%2Fhaproxy.git MINOR: htx: Add function to iterate on an HTX message using HTX blocks the functions htx_get_next() and htx_get_prev() are used to iterate on an HTX message using blocks position. With htx_get_next_blk() and htx_get_prev_blk(), it is possible to do the same, but with HTX blocks. Of course, internally, we rely on position's versions to do so. But it is handy for callers to not take care of the blocks position. --- diff --git a/include/proto/htx.h b/include/proto/htx.h index 7db2059c27..77d077f75b 100644 --- a/include/proto/htx.h +++ b/include/proto/htx.h @@ -211,6 +211,18 @@ static inline int32_t htx_get_prev(const struct htx *htx, uint32_t pos) return (pos - 1); } +/* Returns the HTX block before in the HTX message . If is the + * head, NULL returned. +*/ +static inline struct htx_blk *htx_get_prev_blk(const struct htx *htx, + const struct htx_blk *blk) +{ + int32_t pos; + + pos = htx_get_prev(htx, htx_get_blk_pos(htx, blk)); + return ((pos == -1) ? NULL : htx_get_blk(htx, pos)); +} + /* Returns the position of block immediatly after the one pointed by . If * the message is empty or if is the position of the tail, -1 returned. * @@ -231,6 +243,19 @@ static inline int32_t htx_get_next(const struct htx *htx, uint32_t pos) return pos; } + +/* Returns the HTX block after in the HTX message . If is the + * tail, NULL returned. +*/ +static inline struct htx_blk *htx_get_next_blk(const struct htx *htx, + const struct htx_blk *blk) +{ + int32_t pos; + + pos = htx_get_next(htx, htx_get_blk_pos(htx, blk)); + return ((pos == -1) ? NULL : htx_get_blk(htx, pos)); +} + static inline int32_t htx_find_front(const struct htx *htx) { int32_t front, pos;