aboutsummaryrefslogtreecommitdiff
path: root/src/messenger/gnunet-service-messenger_member_store.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/messenger/gnunet-service-messenger_member_store.h')
-rw-r--r--src/messenger/gnunet-service-messenger_member_store.h158
1 files changed, 0 insertions, 158 deletions
diff --git a/src/messenger/gnunet-service-messenger_member_store.h b/src/messenger/gnunet-service-messenger_member_store.h
deleted file mode 100644
index af50f0d36..000000000
--- a/src/messenger/gnunet-service-messenger_member_store.h
+++ /dev/null
@@ -1,158 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2020--2021 GNUnet e.V.
4
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
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20/**
21 * @author Tobias Frisch
22 * @file src/messenger/gnunet-service-messenger_member_store.h
23 * @brief GNUnet MESSENGER service
24 */
25
26#ifndef GNUNET_SERVICE_MESSENGER_MEMBER_STORE_H
27#define GNUNET_SERVICE_MESSENGER_MEMBER_STORE_H
28
29#include "platform.h"
30#include "gnunet_crypto_lib.h"
31#include "gnunet_container_lib.h"
32#include "gnunet_identity_service.h"
33#include "messenger_api_message.h"
34
35struct GNUNET_MESSENGER_SrvRoom;
36
37struct GNUNET_MESSENGER_Member;
38struct GNUNET_MESSENGER_MemberSession;
39
40struct GNUNET_MESSENGER_MemberStore
41{
42 struct GNUNET_MESSENGER_SrvRoom *room;
43
44 struct GNUNET_CONTAINER_MultiShortmap *members;
45};
46
47typedef int (*GNUNET_MESSENGER_MemberIteratorCallback) (
48 void *cls,
49 const struct GNUNET_IDENTITY_PublicKey *public_key,
50 struct GNUNET_MESSENGER_MemberSession *session);
51
52/**
53 * Initializes a member <i>store</i> as fully empty connected to a <i>room</i>.
54 *
55 * @param[out] store Member store
56 * @param room Room
57 */
58void
59init_member_store (struct GNUNET_MESSENGER_MemberStore *store,
60 struct GNUNET_MESSENGER_SrvRoom *room);
61
62/**
63 * Clears a member <i>store</i>, wipes its content and deallocates its memory.
64 *
65 * @param[in/out] store Member store
66 */
67void
68clear_member_store (struct GNUNET_MESSENGER_MemberStore *store);
69
70/**
71 * Returns the used contact store of a given member <i>store</i>.
72 *
73 * @param[in/out] store Member store
74 * @return Contact store
75 */
76struct GNUNET_MESSENGER_ContactStore*
77get_member_contact_store (struct GNUNET_MESSENGER_MemberStore *store);
78
79/**
80 * Returns the shared secret you need to access a room of the <i>store</i>.
81 *
82 * @param[in] store Member store
83 * @return Shared secret
84 */
85const struct GNUNET_HashCode*
86get_member_store_key (const struct GNUNET_MESSENGER_MemberStore *store);
87
88/**
89 * Loads members from a directory into a member <i>store</i>.
90 *
91 * @param[out] store Member store
92 * @param[in] directory Path to a directory
93 */
94void
95load_member_store (struct GNUNET_MESSENGER_MemberStore *store,
96 const char *directory);
97
98/**
99 * Saves members from a member <i>store</i> into a directory.
100 *
101 * @param[in] store Member store
102 * @param[in] directory Path to a directory
103 */
104void
105save_member_store (struct GNUNET_MESSENGER_MemberStore *store,
106 const char *directory);
107
108/**
109 * Returns the member in a <i>store</i> identified by a given <i>id</i>. If the <i>store</i>
110 * does not contain a member with the given <i>id</i>, NULL gets returned.
111 *
112 * @param[in] store Member store
113 * @param[in] id Member id
114 * @return Member or NULL
115 */
116struct GNUNET_MESSENGER_Member*
117get_store_member (const struct GNUNET_MESSENGER_MemberStore *store,
118 const struct GNUNET_ShortHashCode *id);
119
120/**
121 * Returns the member of a <i>store</i> using a sender id of a given <i>message</i>.
122 * If the member does not provide a matching session, NULL gets returned.
123 *
124 * @param[in/out] store Member store
125 * @param[in] message Message
126 * @return Member or NULL
127 */
128struct GNUNET_MESSENGER_Member*
129get_store_member_of (struct GNUNET_MESSENGER_MemberStore *store,
130 const struct GNUNET_MESSENGER_Message *message);
131
132/**
133 * Adds a member to a <i>store</i> under a specific <i>id</i> and returns it on success.
134 *
135 * @param[in/out] store Member store
136 * @param[in] id Member id
137 * @return Member or NULL
138 */
139struct GNUNET_MESSENGER_Member*
140add_store_member (struct GNUNET_MESSENGER_MemberStore *store,
141 const struct GNUNET_ShortHashCode *id);
142
143/**
144 * Iterate through all member sessions currently connected to the members of the given
145 * member <i>store</i> and call the provided iterator callback with a selected closure.
146 * The function will return the amount of members it iterated through.
147 *
148 * @param[in/out] store Member store
149 * @param[in] it Iterator callback
150 * @param[in/out] cls Closure
151 * @return Amount of members iterated through
152 */
153int
154iterate_store_members (struct GNUNET_MESSENGER_MemberStore *store,
155 GNUNET_MESSENGER_MemberIteratorCallback it,
156 void* cls);
157
158#endif //GNUNET_SERVICE_MESSENGER_MEMBER_STORE_H