From 3a9cf58a75c87b9046c1646a97b798508619fd62 Mon Sep 17 00:00:00 2001
From: Cyrille Bagard <nocbos@gmail.com>
Date: Mon, 31 May 2021 01:38:00 +0200
Subject: Provide a way to merge packed buffers.

---
 src/common/packed.c | 26 ++++++++++++++++++++++++++
 src/common/packed.h |  3 +++
 2 files changed, 29 insertions(+)

diff --git a/src/common/packed.c b/src/common/packed.c
index 117b557..d246de8 100644
--- a/src/common/packed.c
+++ b/src/common/packed.c
@@ -166,6 +166,32 @@ void copy_packed_buffer(packed_buffer_t *dest, const packed_buffer_t *src)
 
 /******************************************************************************
 *                                                                             *
+*  Paramètres  : dest = tampon de données à constituer.                       *
+*                src  = tampon de données à copier.                           *
+*                                                                             *
+*  Description : Inclut les données d'un tampon dans un autre.                *
+*                                                                             *
+*  Retour      : -                                                            *
+*                                                                             *
+*  Remarques   : -                                                            *
+*                                                                             *
+******************************************************************************/
+
+bool include_packed_buffer(packed_buffer_t *dest, const packed_buffer_t *src)
+{
+    bool result;                            /* Bilan à retourner           */
+
+    assert(src->allocated >= (sizeof(uint32_t) + src->used));
+
+    result = extend_packed_buffer(dest, src->data + sizeof(uint32_t), src->used, false);
+
+    return result;
+
+}
+
+
+/******************************************************************************
+*                                                                             *
 *  Paramètres  : pbuf = paquet de données à consulter.                        *
 *                                                                             *
 *  Description : Indique le nombre d'octets de la charge utile d'un paquet.   *
diff --git a/src/common/packed.h b/src/common/packed.h
index f43b999..8158bb4 100644
--- a/src/common/packed.h
+++ b/src/common/packed.h
@@ -65,6 +65,9 @@ void exit_packed_buffer(packed_buffer_t *);
 /* Copie les données d'un tampon dans un autre. */
 void copy_packed_buffer(packed_buffer_t *, const packed_buffer_t *);
 
+/* Inclut les données d'un tampon dans un autre. */
+bool include_packed_buffer(packed_buffer_t *, const packed_buffer_t *);
+
 /* Indique le nombre d'octets de la charge utile d'un paquet. */
 size_t get_packed_buffer_payload_length(const packed_buffer_t *);
 
-- 
cgit v0.11.2-87-g4458