summaryrefslogtreecommitdiff
path: root/lib/stream.h
diff options
context:
space:
mode:
authorMark Stapp <mjs@voltanet.io>2020-04-05 11:48:05 -0400
committerMark Stapp <mjs@voltanet.io>2020-06-02 08:20:54 -0400
commitf8c511cddb9bc54d190d8bfcded339ed7f3ec219 (patch)
treee1d00bc5b3074c2a4f25ad9b7cbcaa91544b75b2 /lib/stream.h
parentf981d44931ced06f594b33c54a27d6d843ad0379 (diff)
lib: add stream_fifo_init, more const
Add utilities that init and deinit a stream_fifo - this lets us use an on-stack fifo in some places, avoiding malloc'ing. Also add const to some apis (no functional changes there). Signed-off-by: Mark Stapp <mjs@voltanet.io>
Diffstat (limited to 'lib/stream.h')
-rw-r--r--lib/stream.h30
1 files changed, 22 insertions, 8 deletions
diff --git a/lib/stream.h b/lib/stream.h
index 23d83bf930..7cacf57d27 100644
--- a/lib/stream.h
+++ b/lib/stream.h
@@ -150,23 +150,25 @@ struct stream_fifo {
*/
extern struct stream *stream_new(size_t);
extern void stream_free(struct stream *);
-extern struct stream *stream_copy(struct stream *, struct stream *src);
-extern struct stream *stream_dup(struct stream *);
+/* Copy 'src' into 'dest', returns 'dest' */
+extern struct stream *stream_copy(struct stream *dest,
+ const struct stream *src);
+extern struct stream *stream_dup(const struct stream *s);
extern size_t stream_resize_inplace(struct stream **sptr, size_t newsize);
-extern size_t stream_get_getp(struct stream *);
-extern size_t stream_get_endp(struct stream *);
-extern size_t stream_get_size(struct stream *);
-extern uint8_t *stream_get_data(struct stream *);
+extern size_t stream_get_getp(const struct stream *s);
+extern size_t stream_get_endp(const struct stream *s);
+extern size_t stream_get_size(const struct stream *s);
+extern uint8_t *stream_get_data(struct stream *s);
/**
* Create a new stream structure; copy offset bytes from s1 to the new
* stream; copy s2 data to the new stream; copy rest of s1 data to the
* new stream.
*/
-extern struct stream *stream_dupcat(struct stream *s1, struct stream *s2,
- size_t offset);
+extern struct stream *stream_dupcat(const struct stream *s1,
+ const struct stream *s2, size_t offset);
extern void stream_set_getp(struct stream *, size_t);
extern void stream_set_endp(struct stream *, size_t);
@@ -283,6 +285,18 @@ extern uint8_t *stream_pnt(struct stream *);
extern struct stream_fifo *stream_fifo_new(void);
/*
+ * Init or re-init an on-stack fifo. This allows use of a fifo struct without
+ * requiring a malloc/free cycle.
+ * Note well that the fifo must be de-inited with the 'fifo_deinit' api.
+ */
+void stream_fifo_init(struct stream_fifo *fifo);
+
+/*
+ * Deinit an on-stack fifo.
+ */
+void stream_fifo_deinit(struct stream_fifo *fifo);
+
+/*
* Push a stream onto a stream_fifo.
*
* fifo