aboutsummaryrefslogtreecommitdiff
path: root/src/messenger/gnunet-service-messenger_message_state.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/messenger/gnunet-service-messenger_message_state.c')
-rw-r--r--src/messenger/gnunet-service-messenger_message_state.c40
1 files changed, 23 insertions, 17 deletions
diff --git a/src/messenger/gnunet-service-messenger_message_state.c b/src/messenger/gnunet-service-messenger_message_state.c
index b2328588e..112f03032 100644
--- a/src/messenger/gnunet-service-messenger_message_state.c
+++ b/src/messenger/gnunet-service-messenger_message_state.c
@@ -1,6 +1,6 @@
1/* 1/*
2 This file is part of GNUnet. 2 This file is part of GNUnet.
3 Copyright (C) 2020--2021 GNUnet e.V. 3 Copyright (C) 2020--2023 GNUnet e.V.
4 4
5 GNUnet is free software: you can redistribute it and/or modify it 5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published 6 under the terms of the GNU Affero General Public License as published
@@ -29,35 +29,38 @@
29void 29void
30init_message_state (struct GNUNET_MESSENGER_MessageState *state) 30init_message_state (struct GNUNET_MESSENGER_MessageState *state)
31{ 31{
32 GNUNET_assert(state); 32 GNUNET_assert (state);
33 33
34 init_list_messages (&(state->last_messages)); 34 init_list_messages (&(state->last_messages));
35} 35}
36 36
37
37void 38void
38clear_message_state (struct GNUNET_MESSENGER_MessageState *state) 39clear_message_state (struct GNUNET_MESSENGER_MessageState *state)
39{ 40{
40 GNUNET_assert(state); 41 GNUNET_assert (state);
41 42
42 clear_list_messages (&(state->last_messages)); 43 clear_list_messages (&(state->last_messages));
43} 44}
44 45
46
45void 47void
46get_message_state_chain_hash (const struct GNUNET_MESSENGER_MessageState *state, 48get_message_state_chain_hash (const struct GNUNET_MESSENGER_MessageState *state,
47 struct GNUNET_HashCode *hash) 49 struct GNUNET_HashCode *hash)
48{ 50{
49 GNUNET_assert((state) && (hash)); 51 GNUNET_assert ((state) && (hash));
50 52
51 if (state->last_messages.head) 53 if (state->last_messages.head)
52 GNUNET_memcpy(hash, &(state->last_messages.head->hash), sizeof(*hash)); 54 GNUNET_memcpy (hash, &(state->last_messages.head->hash), sizeof(*hash));
53 else 55 else
54 memset (hash, 0, sizeof(*hash)); 56 memset (hash, 0, sizeof(*hash));
55} 57}
56 58
59
57const struct GNUNET_HashCode* 60const struct GNUNET_HashCode*
58get_message_state_merge_hash (const struct GNUNET_MESSENGER_MessageState *state) 61get_message_state_merge_hash (const struct GNUNET_MESSENGER_MessageState *state)
59{ 62{
60 GNUNET_assert(state); 63 GNUNET_assert (state);
61 64
62 if (state->last_messages.head == state->last_messages.tail) 65 if (state->last_messages.head == state->last_messages.tail)
63 return NULL; 66 return NULL;
@@ -65,13 +68,14 @@ get_message_state_merge_hash (const struct GNUNET_MESSENGER_MessageState *state)
65 return &(state->last_messages.tail->hash); 68 return &(state->last_messages.tail->hash);
66} 69}
67 70
71
68void 72void
69update_message_state (struct GNUNET_MESSENGER_MessageState *state, 73update_message_state (struct GNUNET_MESSENGER_MessageState *state,
70 int requested, 74 int requested,
71 const struct GNUNET_MESSENGER_Message *message, 75 const struct GNUNET_MESSENGER_Message *message,
72 const struct GNUNET_HashCode *hash) 76 const struct GNUNET_HashCode *hash)
73{ 77{
74 GNUNET_assert((state) && (message) && (hash)); 78 GNUNET_assert ((state) && (message) && (hash));
75 79
76 if ((GNUNET_YES == requested) || 80 if ((GNUNET_YES == requested) ||
77 (GNUNET_MESSENGER_KIND_INFO == message->header.kind) || 81 (GNUNET_MESSENGER_KIND_INFO == message->header.kind) ||
@@ -79,36 +83,38 @@ update_message_state (struct GNUNET_MESSENGER_MessageState *state,
79 return; 83 return;
80 84
81 if (GNUNET_MESSENGER_KIND_MERGE == message->header.kind) 85 if (GNUNET_MESSENGER_KIND_MERGE == message->header.kind)
82 remove_from_list_messages(&(state->last_messages), &(message->body.merge.previous)); 86 remove_from_list_messages (&(state->last_messages),
83 remove_from_list_messages(&(state->last_messages), &(message->header.previous)); 87 &(message->body.merge.previous));
88 remove_from_list_messages (&(state->last_messages),
89 &(message->header.previous));
84 90
85 add_to_list_messages (&(state->last_messages), hash); 91 add_to_list_messages (&(state->last_messages), hash);
86} 92}
87 93
94
88void 95void
89load_message_state (struct GNUNET_MESSENGER_MessageState *state, 96load_message_state (struct GNUNET_MESSENGER_MessageState *state,
90 const char *path) 97 const char *path)
91{ 98{
92 GNUNET_assert((state) && (path)); 99 GNUNET_assert ((state) && (path));
93 100
94 char *last_messages_file; 101 char *last_messages_file;
95 GNUNET_asprintf (&last_messages_file, "%s%s", path, "last_messages.list"); 102 GNUNET_asprintf (&last_messages_file, "%s%s", path, "last_messages.list");
96 103
97 load_list_messages(&(state->last_messages), last_messages_file); 104 load_list_messages (&(state->last_messages), last_messages_file);
98 GNUNET_free(last_messages_file); 105 GNUNET_free (last_messages_file);
99} 106}
100 107
108
101void 109void
102save_message_state (const struct GNUNET_MESSENGER_MessageState *state, 110save_message_state (const struct GNUNET_MESSENGER_MessageState *state,
103 const char *path) 111 const char *path)
104{ 112{
105 GNUNET_assert((state) && (path)); 113 GNUNET_assert ((state) && (path));
106 114
107 char *last_messages_file; 115 char *last_messages_file;
108 GNUNET_asprintf (&last_messages_file, "%s%s", path, "last_messages.list"); 116 GNUNET_asprintf (&last_messages_file, "%s%s", path, "last_messages.list");
109 117
110 save_list_messages(&(state->last_messages), last_messages_file); 118 save_list_messages (&(state->last_messages), last_messages_file);
111 GNUNET_free(last_messages_file); 119 GNUNET_free (last_messages_file);
112} 120}
113
114