summaryrefslogtreecommitdiff
path: root/src/analysis/db/snapshot.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2019-10-19 12:50:37 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2019-10-19 12:50:37 (GMT)
commitd7c69bcb27a7d06932cd25021144b6cbbe4eb82f (patch)
treeb014aa31a1c9d9ce4afddf505b727cabacf15e44 /src/analysis/db/snapshot.c
parentbcdf953ef6616c404d013f3473fb12a7bf43440b (diff)
Exchanged the list of all snapshots.
Diffstat (limited to 'src/analysis/db/snapshot.c')
-rw-r--r--src/analysis/db/snapshot.c63
1 files changed, 62 insertions, 1 deletions
diff --git a/src/analysis/db/snapshot.c b/src/analysis/db/snapshot.c
index 6b762b7..79128ef 100644
--- a/src/analysis/db/snapshot.c
+++ b/src/analysis/db/snapshot.c
@@ -82,6 +82,9 @@ static snapshot_node_t *find_snapshot_node(snapshot_node_t *, const snapshot_id_
/* Ajoute un instantané comme prolongement d'un instantané. */
static void add_snapshot_node(snapshot_node_t *, snapshot_node_t *);
+/* Collecte les descriptions d'une arborescence d'instantanés. */
+static bool pack_snapshot_node(const snapshot_node_t *, packed_buffer *);
+
/* --------------------- MANIPULATIONS D'ENSEMBLE D'INSTANTANES --------------------- */
@@ -378,7 +381,7 @@ static DBError save_snapshot_node(const snapshot_node_t *node, xmlDocPtr xdoc, x
goto exit;
}
- created = get_snapshot_info_creation(&node->info);
+ created = get_snapshot_info_created(&node->info);
status = _add_uint64_attribute_to_node(xml_node, "created", created);
@@ -497,13 +500,47 @@ static snapshot_node_t *find_snapshot_node(snapshot_node_t *node, const snapshot
static void add_snapshot_node(snapshot_node_t *node, snapshot_node_t *child)
{
+ snapshot_id_t *src; /* Identifiant d'instantané #0 */
+ snapshot_id_t *dest; /* Identifiant d'instantané #1 */
+
node->children = realloc(node->children, ++node->count * sizeof(snapshot_node_t *));
node->children[node->count - 1] = child;
+ src = get_snapshot_info_id(&node->info);
+ dest = get_snapshot_info_parent_id(&child->info);
+
+ copy_snapshot_id(dest, src);
+
}
+/******************************************************************************
+* *
+* Paramètres : node = définition d'instantané à consulter. *
+* pbuf = paquet de données où venir inscrire des infos. *
+* *
+* Description : Collecte les descriptions d'une arborescence d'instantanés. *
+* *
+* Retour : Bilan du déroulement des opérations. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static bool pack_snapshot_node(const snapshot_node_t *node, packed_buffer *pbuf)
+{
+ bool result; /* Bilan à retourner */
+ size_t i; /* Boucle de parcours */
+
+ result = pack_snapshot_info(&node->info, pbuf);
+
+ for (i = 0; i < node->count && result; i++)
+ result = pack_snapshot_node(node->children[i], pbuf);
+
+ return result;
+
+}
@@ -1044,3 +1081,27 @@ sqlite3 *g_db_snapshot_get_database(const GDbSnapshot *snap, const snapshot_id_t
return result;
}
+
+
+/******************************************************************************
+* *
+* Paramètres : snap = gestionnaire d'instantanés à consulter. *
+* pbuf = paquet de données où venir inscrire des infos. *
+* *
+* Description : Collecte les descriptions de l'ensemble des instantanés. *
+* *
+* Retour : Bilan du déroulement des opérations. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+bool g_db_snapshot_pack_all(const GDbSnapshot *snap, packed_buffer *pbuf)
+{
+ bool result; /* Bilan à retourner */
+
+ result = pack_snapshot_node(snap->nodes, pbuf);
+
+ return result;
+
+}