summaryrefslogtreecommitdiff
path: root/src/analysis/db/misc
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2017-02-28 18:58:57 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2017-02-28 18:58:57 (GMT)
commit027305c2447b05de2c576e3f5ee32ced400f439f (patch)
tree96f35ddcd87129f3c4ccec69e8fa0216654215c9 /src/analysis/db/misc
parent7d153f7d3a32a66d3eaf5199d396debbe3b675f5 (diff)
Defined abstract packed buffers to transfert data.
Diffstat (limited to 'src/analysis/db/misc')
-rw-r--r--src/analysis/db/misc/rlestr.c56
-rw-r--r--src/analysis/db/misc/rlestr.h5
-rw-r--r--src/analysis/db/misc/timestamp.c31
-rw-r--r--src/analysis/db/misc/timestamp.h5
4 files changed, 38 insertions, 59 deletions
diff --git a/src/analysis/db/misc/rlestr.c b/src/analysis/db/misc/rlestr.c
index 2f06542..39e2d99 100644
--- a/src/analysis/db/misc/rlestr.c
+++ b/src/analysis/db/misc/rlestr.c
@@ -24,15 +24,11 @@
#include "rlestr.h"
-#include <endian.h>
#include <malloc.h>
#include <sqlite3.h>
#include <string.h>
-#include "../../../common/io.h"
-
-
/******************************************************************************
* *
@@ -162,9 +158,8 @@ int cmp_rle_string(const rle_string *s1, const rle_string *s2)
/******************************************************************************
* *
-* Paramètres : str = informations à constituer. [OUT] *
-* fd = flux ouvert en lecture pour l'importation. *
-* flags = éventuelles options de réception supplémentaires. *
+* Paramètres : str = informations à constituer. [OUT] *
+* pbuf = paquet de données où venir puiser les infos. *
* *
* Description : Importe la définition d'une chaîne de caractères. *
* *
@@ -174,44 +169,41 @@ int cmp_rle_string(const rle_string *s1, const rle_string *s2)
* *
******************************************************************************/
-bool recv_rle_string(rle_string *str, int fd, int flags)
+bool unpack_rle_string(rle_string *str, packed_buffer *pbuf)
{
- uint32_t val32; /* Valeur sur 32 bits */
- bool status; /* Bilan d'une opération */
+ bool result; /* Bilan à retourner */
+ uint32_t tmp32; /* Valeur sur 32 bits */
str->data = NULL;
str->length = 0;
- status = safe_recv(fd, &val32, sizeof(uint32_t), MSG_WAITALL | flags);
- if (!status) return false;
+ result = extract_packed_buffer(pbuf, &tmp32, sizeof(uint32_t), true);
- str->length = be32toh(val32);
+ str->length = tmp32;
- if (str->length > 0)
+ if (result && str->length > 0)
{
str->data = (char *)malloc(str->length + 1);
- status = safe_recv(fd, str->data, str->length + 1, MSG_WAITALL | flags);
- if (!status)
- {
+ result = extract_packed_buffer(pbuf, str->data, str->length + 1, false);
+
+ if (!result)
unset_rle_string(str);
- return false;
- }
- str->data[str->length] = '\0';
+ else
+ str->data[str->length] = '\0';
}
- return true;
+ return result;
}
/******************************************************************************
* *
-* Paramètres : str = informations à sauvegarer. *
-* fd = flux ouvert en écriture pour l'exportation. *
-* flags = éventuelles options d'envoi supplémentaires. *
+* Paramètres : str = informations à sauvegarer. *
+* pbuf = paquet de données où venir inscrire les infos. *
* *
* Description : Exporte la définition d'une chaîne de caractères. *
* *
@@ -221,20 +213,16 @@ bool recv_rle_string(rle_string *str, int fd, int flags)
* *
******************************************************************************/
-bool send_rle_string(const rle_string *str, int fd, int flags)
+bool pack_rle_string(const rle_string *str, packed_buffer *pbuf)
{
- bool status; /* Bilan d'une opération */
+ bool result; /* Bilan à retourner */
- status = safe_send(fd, (uint32_t []) { htobe32(str->length) }, sizeof(uint32_t), MSG_MORE | flags);
- if (!status) return false;
+ result = extend_packed_buffer(pbuf, (uint32_t []) { str->length }, sizeof(uint32_t), true);
- if (str->length > 0)
- {
- status = safe_send(fd, str->data, str->length + 1, flags);
- if (!status) return false;
- }
+ if (result && str->length > 0)
+ result = extend_packed_buffer(pbuf, str->data, str->length + 1, false);
- return true;
+ return result;
}
diff --git a/src/analysis/db/misc/rlestr.h b/src/analysis/db/misc/rlestr.h
index 01f37e6..be76f17 100644
--- a/src/analysis/db/misc/rlestr.h
+++ b/src/analysis/db/misc/rlestr.h
@@ -30,6 +30,7 @@
#include <sys/types.h>
+#include "../../../common/packed.h"
#include "../../../common/sqlite.h"
@@ -66,10 +67,10 @@ void unset_rle_string(rle_string *);
int cmp_rle_string(const rle_string *, const rle_string *);
/* Importe la définition d'une chaîne de caractères. */
-bool recv_rle_string(rle_string *, int, int);
+bool unpack_rle_string(rle_string *, packed_buffer *);
/* Exporte la définition d'une chaîne de caractères. */
-bool send_rle_string(const rle_string *, int, int);
+bool pack_rle_string(const rle_string *, packed_buffer *);
diff --git a/src/analysis/db/misc/timestamp.c b/src/analysis/db/misc/timestamp.c
index 6c7a47f..aa9f758 100644
--- a/src/analysis/db/misc/timestamp.c
+++ b/src/analysis/db/misc/timestamp.c
@@ -24,15 +24,11 @@
#include "timestamp.h"
-#include <endian.h>
#include <malloc.h>
#include <sqlite3.h>
#include <time.h>
-#include "../../../common/io.h"
-
-
/******************************************************************************
* *
@@ -117,8 +113,7 @@ int cmp_timestamp(const timestamp_t *t1, const timestamp_t *t2)
/******************************************************************************
* *
* Paramètres : timestamp = informations à constituer. [OUT] *
-* fd = flux ouvert en lecture pour l'importation. *
-* flags = éventuelles options de réception supplémentaires.*
+* pbuf = paquet de données où venir puiser les infos. *
* *
* Description : Importe la définition d'un horodatage. *
* *
@@ -128,17 +123,13 @@ int cmp_timestamp(const timestamp_t *t1, const timestamp_t *t2)
* *
******************************************************************************/
-bool recv_timestamp(timestamp_t *timestamp, int fd, int flags)
+bool unpack_timestamp(timestamp_t *timestamp, packed_buffer *pbuf)
{
- uint64_t val64; /* Valeur sur 64 bits */
- bool status; /* Bilan d'une opération */
+ bool result; /* Bilan à retourner */
- status = safe_recv(fd, &val64, sizeof(uint64_t), MSG_WAITALL | flags);
- if (!status) return false;
+ result = extract_packed_buffer(pbuf, (uint64_t *)timestamp, sizeof(uint64_t), true);
- *timestamp = be64toh(val64);
-
- return true;
+ return result;
}
@@ -146,8 +137,7 @@ bool recv_timestamp(timestamp_t *timestamp, int fd, int flags)
/******************************************************************************
* *
* Paramètres : timestamp = informations à sauvegarer. *
-* fd = flux ouvert en écriture pour l'exportation. *
-* flags = éventuelles options d'envoi supplémentaires. *
+* pbuf = paquet de données où venir inscrire les infos. *
* *
* Description : Exporte la définition d'un horodatage. *
* *
@@ -157,14 +147,13 @@ bool recv_timestamp(timestamp_t *timestamp, int fd, int flags)
* *
******************************************************************************/
-bool send_timestamp(const timestamp_t *timestamp, int fd, int flags)
+bool pack_timestamp(const timestamp_t *timestamp, packed_buffer *pbuf)
{
- bool status; /* Bilan d'une opération */
+ bool result; /* Bilan à retourner */
- status = safe_send(fd, (uint64_t []) { htobe64(*timestamp) }, sizeof(uint64_t), flags);
- if (!status) return false;
+ result = extend_packed_buffer(pbuf, (uint64_t *)timestamp, sizeof(uint64_t), true);
- return true;
+ return result;
}
diff --git a/src/analysis/db/misc/timestamp.h b/src/analysis/db/misc/timestamp.h
index 5d4f2f1..14a1fb5 100644
--- a/src/analysis/db/misc/timestamp.h
+++ b/src/analysis/db/misc/timestamp.h
@@ -29,6 +29,7 @@
#include <stdint.h>
+#include "../../../common/packed.h"
#include "../../../common/sqlite.h"
@@ -52,10 +53,10 @@ bool timestamp_is_younger(timestamp_t, timestamp_t);
int cmp_timestamp(const timestamp_t *, const timestamp_t *);
/* Importe la définition d'un horodatage. */
-bool recv_timestamp(timestamp_t *, int, int);
+bool unpack_timestamp(timestamp_t *, packed_buffer *);
/* Exporte la définition d'un horodatage. */
-bool send_timestamp(const timestamp_t *, int, int);
+bool pack_timestamp(const timestamp_t *, packed_buffer *);