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.h151
1 files changed, 0 insertions, 151 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 859e4683d..000000000
--- a/src/messenger/gnunet-service-messenger_member_store.h
+++ /dev/null
@@ -1,151 +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, struct GNUNET_MESSENGER_SrvRoom *room);
60
61/**
62 * Clears a member <i>store</i>, wipes its content and deallocates its memory.
63 *
64 * @param[in/out] store Member store
65 */
66void
67clear_member_store (struct GNUNET_MESSENGER_MemberStore *store);
68
69/**
70 * Returns the used contact store of a given member <i>store</i>.
71 *
72 * @param[in/out] store Member store
73 * @return Contact store
74 */
75struct GNUNET_MESSENGER_ContactStore*
76get_member_contact_store (struct GNUNET_MESSENGER_MemberStore *store);
77
78/**
79 * Returns the shared secret you need to access a room of the <i>store</i>.
80 *
81 * @param[in] store Member store
82 * @return Shared secret
83 */
84const struct GNUNET_HashCode*
85get_member_store_key (const struct GNUNET_MESSENGER_MemberStore *store);
86
87/**
88 * Loads members from a directory into a member <i>store</i>.
89 *
90 * @param[out] store Member store
91 * @param[in] directory Path to a directory
92 */
93void
94load_member_store (struct GNUNET_MESSENGER_MemberStore *store, const char *directory);
95
96/**
97 * Saves members from a member <i>store</i> into a directory.
98 *
99 * @param[in] store Member store
100 * @param[in] directory Path to a directory
101 */
102void
103save_member_store (struct GNUNET_MESSENGER_MemberStore *store, const char *directory);
104
105/**
106 * Returns the member in a <i>store</i> identified by a given <i>id</i>. If the <i>store</i>
107 * does not contain a member with the given <i>id</i>, NULL gets returned.
108 *
109 * @param[in] store Member store
110 * @param[in] id Member id
111 * @return Member or NULL
112 */
113struct GNUNET_MESSENGER_Member*
114get_store_member (const struct GNUNET_MESSENGER_MemberStore *store, const struct GNUNET_ShortHashCode *id);
115
116/**
117 * Returns the member of a <i>store</i> using a sender id of a given <i>message</i>.
118 * If the member does not provide a matching session, NULL gets returned.
119 *
120 * @param[in/out] store Member store
121 * @param[in] message Message
122 * @return Member or NULL
123 */
124struct GNUNET_MESSENGER_Member*
125get_store_member_of (struct GNUNET_MESSENGER_MemberStore *store, const struct GNUNET_MESSENGER_Message *message);
126
127/**
128 * Adds a member to a <i>store</i> under a specific <i>id</i> and returns it on success.
129 *
130 * @param[in/out] store Member store
131 * @param[in] id Member id
132 * @return Member or NULL
133 */
134struct GNUNET_MESSENGER_Member*
135add_store_member (struct GNUNET_MESSENGER_MemberStore *store, const struct GNUNET_ShortHashCode *id);
136
137/**
138 * Iterate through all member sessions currently connected to the members of the given
139 * member <i>store</i> and call the provided iterator callback with a selected closure.
140 * The function will return the amount of members it iterated through.
141 *
142 * @param[in/out] store Member store
143 * @param[in] it Iterator callback
144 * @param[in/out] cls Closure
145 * @return Amount of members iterated through
146 */
147int
148iterate_store_members (struct GNUNET_MESSENGER_MemberStore *store, GNUNET_MESSENGER_MemberIteratorCallback it,
149 void* cls);
150
151#endif //GNUNET_SERVICE_MESSENGER_MEMBER_STORE_H