aboutsummaryrefslogtreecommitdiff
path: root/src/messenger/gnunet-service-messenger_operation.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/messenger/gnunet-service-messenger_operation.h')
-rw-r--r--src/messenger/gnunet-service-messenger_operation.h131
1 files changed, 0 insertions, 131 deletions
diff --git a/src/messenger/gnunet-service-messenger_operation.h b/src/messenger/gnunet-service-messenger_operation.h
deleted file mode 100644
index 485668548..000000000
--- a/src/messenger/gnunet-service-messenger_operation.h
+++ /dev/null
@@ -1,131 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 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_operation.h
23 * @brief GNUnet MESSENGER service
24 */
25
26#ifndef GNUNET_SERVICE_MESSENGER_OPERATION_H
27#define GNUNET_SERVICE_MESSENGER_OPERATION_H
28
29#include "platform.h"
30#include "gnunet_configuration_lib.h"
31#include "gnunet_crypto_lib.h"
32#include "gnunet_scheduler_lib.h"
33#include "gnunet_strings_lib.h"
34#include "gnunet_time_lib.h"
35
36enum GNUNET_MESSENGER_OperationType
37{
38 GNUNET_MESSENGER_OP_REQUEST = 1,
39 GNUNET_MESSENGER_OP_DELETE = 2,
40 GNUNET_MESSENGER_OP_MERGE = 3,
41
42 GNUNET_MESSENGER_OP_UNKNOWN = 0
43};
44
45struct GNUNET_MESSENGER_OperationStore;
46
47struct GNUNET_MESSENGER_Operation
48{
49 enum GNUNET_MESSENGER_OperationType type;
50
51 struct GNUNET_HashCode hash;
52 struct GNUNET_TIME_Absolute timestamp;
53
54 struct GNUNET_MESSENGER_OperationStore *store;
55 struct GNUNET_SCHEDULER_Task* task;
56};
57
58/**
59 * Creates and allocates a new operation under a given <i>hash</i>.
60 *
61 * @param[in] hash Hash of message
62 */
63struct GNUNET_MESSENGER_Operation*
64create_operation (const struct GNUNET_HashCode *hash);
65
66/**
67 * Destroys an operation and frees its memory fully.
68 *
69 * @param[in/out] op Operation
70 */
71void
72destroy_operation (struct GNUNET_MESSENGER_Operation *op);
73
74/**
75 * Loads data from a configuration file at a selected <i>path</i> into
76 * a new allocated and created operation for a specific operation
77 * <i>store</i> if the required information could be read successfully.
78 *
79 * The method will return the new operation and it will be started
80 * automatically to match its timestamp of execution.
81 *
82 * If the method fails to restore any valid operation from the file,
83 * NULL gets returned instead.
84 *
85 * @param[in/out] store Operation store
86 * @param[in] path Path of a configuration file
87 */
88struct GNUNET_MESSENGER_Operation*
89load_operation (struct GNUNET_MESSENGER_OperationStore *store,
90 const char *path);
91
92/**
93 * Saves data from an <i>operation</i> into a configuration file at a
94 * selected <i>path</i> which can be load to restore the operation
95 * completely and continue its process.
96 *
97 * @param[in] op Operation
98 * @param[in] path Path of a configuration file
99 */
100void
101save_operation (const struct GNUNET_MESSENGER_Operation *op,
102 const char *path);
103
104/**
105 * Starts an inactive operation with a given <i>delay</i> in a
106 * specific operation <i>store</i>. The method will replace the
107 * operations type to process it correctly. An operation can't be
108 * started twice, it has to be stopped or fully processed first.
109 *
110 * @param[in/out] op Operation
111 * @param[in] type Type of operation
112 * @param[in/out] store Operation store
113 * @param[in] delay Delay
114 * @return #GNUNET_OK on success, otherwise #GNUNET_SYSERR
115 */
116int
117start_operation (struct GNUNET_MESSENGER_Operation *op,
118 enum GNUNET_MESSENGER_OperationType type,
119 struct GNUNET_MESSENGER_OperationStore *store,
120 struct GNUNET_TIME_Relative delay);
121
122/**
123 * Stops an active operation and resets its type to be
124 * #GNUNET_MESSENGER_OP_UNKNOWN.
125 *
126 * @return #GNUNET_OK on success, otherwise #GNUNET_SYSERR
127 */
128int
129stop_operation (struct GNUNET_MESSENGER_Operation *op);
130
131#endif //GNUNET_SERVICE_MESSENGER_OPERATION_H