summaryrefslogtreecommitdiff
path: root/src/common/packed.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/packed.c')
-rw-r--r--src/common/packed.c67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/common/packed.c b/src/common/packed.c
index 39df330..03796b1 100644
--- a/src/common/packed.c
+++ b/src/common/packed.c
@@ -239,6 +239,73 @@ bool extract_packed_buffer(packed_buffer *pbuf, void *buf, size_t len, bool ntoh
* Paramètres : pbuf = paquet de données à constituer. [OUT] *
* fd = flux ouvert en lecture. *
* *
+* Description : Lit des données depuis un flux local. *
+* *
+* Retour : true si toutes les données ont été reçues, false sinon. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+bool read_packed_buffer(packed_buffer *pbuf, int fd)
+{
+ bool result; /* Bilan à retourner */
+ uint32_t used; /* Taille de charge utile */
+
+ result = safe_read(fd, &used, sizeof(uint32_t));
+
+ if (!result)
+ init_packed_buffer(pbuf);
+
+ else
+ {
+ pbuf->allocated = sizeof(uint32_t) + used;
+ pbuf->data = malloc(pbuf->allocated * sizeof(uint8_t));
+
+ pbuf->used = used;
+ pbuf->pos = sizeof(uint32_t);
+
+ result = safe_read(fd, pbuf->data + pbuf->pos, used);
+
+ }
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : pbuf = paquet de données à émettre. *
+* fd = flux ouvert en écriture. *
+* *
+* Description : Ecrit des données dans un flux local. *
+* *
+* Retour : true si toutes les données ont été émises, false sinon. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+bool write_packed_buffer(packed_buffer *pbuf, int fd)
+{
+ bool result; /* Bilan à retourner */
+
+ *((uint32_t *)pbuf->data) = pbuf->used;
+
+ result = safe_write(fd, pbuf->data, sizeof(uint32_t) + pbuf->used);
+
+ return result;
+
+}
+
+
+
+/******************************************************************************
+* *
+* Paramètres : pbuf = paquet de données à constituer. [OUT] *
+* fd = flux ouvert en lecture. *
+* *
* Description : Réceptionne des données depuis un flux réseau. *
* *
* Retour : true si toutes les données ont été reçues, false sinon. *