-adding continuation to testbed peer start/stop API
[oweals/gnunet.git] / src / include / block_mesh.h
1 /*
2      This file is part of GNUnet.
3      (C) 2012 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_mesh.h
23  * @brief fs block formats (shared between fs and block)
24  * @author Bartlomiej Polot
25  */
26 #ifndef BLOCK_MESH_H
27 #define BLOCK_MESH_H
28
29 #include "gnunet_util_lib.h"
30 #include "gnunet_mesh_service.h"
31 #include <stdint.h>
32
33 /**
34  * @brief peer block (announce peer + type)
35  */
36 struct PBlock
37 {
38     /**
39      * Identity of the peer
40      */
41   struct GNUNET_PeerIdentity id;
42
43     /**
44      * Type of service offered
45      */
46   GNUNET_MESH_ApplicationType type;
47 };
48
49 /**
50  * @brief A MeshRegexBlock contains one or more of this struct in the payload.
51  */
52 struct MeshRegexEdge
53 {
54       /**
55        * Destination of this edge.
56        */
57     struct GNUNET_HashCode key;
58
59       /**
60        * Length of the token towards the new state.
61        */
62     unsigned int n_token;
63
64     /* char token[n_token] */
65 };
66
67 /**
68  * @brief Block to announce a regex state.
69  */
70 struct MeshRegexBlock
71 {
72       /**
73        * The key of the state.
74        */
75     struct GNUNET_HashCode key;
76
77       /**
78        * Length of the proof regex string.
79        */
80     unsigned int n_proof;
81
82       /**
83        * Numer of edges parting from this state.
84        */
85     unsigned int n_edges;
86
87       /**
88        * Is this state an accepting state?
89        */
90     int accepting;
91
92     /* char proof[n_proof] */
93     /* struct MeshEdge edges[n_edges] */
94 };
95
96 /**
97  * @brief Block to announce a peer accepting a state.
98  */
99 struct MeshRegexAccept
100 {
101       /**
102        * The key of the state.
103        */
104     struct GNUNET_HashCode key;
105
106       /**
107        * Length of the proof regex string.
108        * FIXME necessary???
109        * already present in the leading MeshRegexBlock
110        */
111     // unsigned int n_proof;
112
113       /**
114        * The identity of the peer accepting the state
115        */
116     struct GNUNET_PeerIdentity id;
117
118 };
119 #endif