aboutsummaryrefslogtreecommitdiff
path: root/src/include/block_regex.h
diff options
context:
space:
mode:
authorBart Polot <bart@net.in.tum.de>2013-01-17 17:09:37 +0000
committerBart Polot <bart@net.in.tum.de>2013-01-17 17:09:37 +0000
commit47cb85c43071a16ec899e7f8fb45b3eec39895ec (patch)
tree4b3ec6dd6eb72488826053d0ce9fc45d26df3df6 /src/include/block_regex.h
parent37a8306064f1fe08c1471c46a3cd913cd22f8a60 (diff)
downloadgnunet-47cb85c43071a16ec899e7f8fb45b3eec39895ec.tar.gz
gnunet-47cb85c43071a16ec899e7f8fb45b3eec39895ec.zip
Move regex DHT integration from mesh to regex
Diffstat (limited to 'src/include/block_regex.h')
-rw-r--r--src/include/block_regex.h120
1 files changed, 120 insertions, 0 deletions
diff --git a/src/include/block_regex.h b/src/include/block_regex.h
new file mode 100644
index 000000000..282c626a2
--- /dev/null
+++ b/src/include/block_regex.h
@@ -0,0 +1,120 @@
1/*
2 This file is part of GNUnet.
3 (C) 2012,2013 Christian Grothoff (and other contributing authors)
4
5 GNUnet is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published
7 by the Free Software Foundation; either version 3, or (at your
8 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 General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with GNUnet; see the file COPYING. If not, write to the
17 Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA.
19*/
20
21/**
22 * @file include/block_regex.h
23 * @brief regex block formats
24 * @author Bartlomiej Polot
25 */
26#ifndef BLOCK_REGEX_H
27#define BLOCK_REGEX_H
28
29#ifdef __cplusplus
30extern "C"
31{
32#if 0
33 /* keep Emacsens' auto-indent happy */
34}
35#endif
36#endif
37
38#include "gnunet_util_lib.h"
39#include <stdint.h>
40
41
42/**
43 * @brief A RegexBlock contains one or more of this struct in the payload.
44 */
45struct RegexEdge
46{
47 /**
48 * Destination of this edge.
49 */
50 struct GNUNET_HashCode key;
51
52 /**
53 * Length of the token towards the new state.
54 */
55 unsigned int n_token;
56
57 /* char token[n_token] */
58};
59
60/**
61 * @brief Block to announce a regex state.
62 */
63struct RegexBlock
64{
65 /**
66 * The key of the state.
67 */
68 struct GNUNET_HashCode key;
69
70 /**
71 * Length of the proof regex string.
72 */
73 unsigned int n_proof;
74
75 /**
76 * Numer of edges parting from this state.
77 */
78 unsigned int n_edges;
79
80 /**
81 * Is this state an accepting state?
82 */
83 int accepting;
84
85 /* char proof[n_proof] */
86 /* struct RegexEdge edges[n_edges] */
87};
88
89/**
90 * @brief Block to announce a peer accepting a state.
91 */
92struct RegexAccept
93{
94 /**
95 * The key of the state.
96 */
97 struct GNUNET_HashCode key;
98
99 /**
100 * Length of the proof regex string.
101 * FIXME necessary???
102 * already present in the leading MeshRegexBlock
103 */
104 // unsigned int n_proof;
105
106 /**
107 * The identity of the peer accepting the state
108 */
109 struct GNUNET_PeerIdentity id;
110
111};
112
113#if 0 /* keep Emacsens' auto-indent happy */
114{
115#endif
116#ifdef __cplusplus
117}
118#endif
119
120#endif \ No newline at end of file