From d16b0a7b2dce5e90a11a74afa13b8d1fd5e7c5e4 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Thu, 22 Nov 2018 11:23:23 +0100 Subject: [PATCH] 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. --- include/proto/htx.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/include/proto/htx.h b/include/proto/htx.h index 7db2059c2..77d077f75 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;