71ac273cdf158dbeddede738b8dd5569d885fa38
[oweals/gnunet.git] / src / regex / regex_ipc.h
1 /*
2      This file is part of GNUnet
3      Copyright (C) 2012, 2013 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 /**
19  * @file regex/regex_ipc.h
20  * @brief regex IPC messages (not called 'regex.h' due to conflict with
21  *        system headers)
22  * @author Christian Grothoff
23  */
24 #ifndef REGEX_IPC_H
25 #define REGEX_IPC_H
26
27 #include "gnunet_util_lib.h"
28
29 /**
30  * Request for regex service to announce capability.
31  */
32 struct AnnounceMessage
33 {
34
35   /**
36    * Type is GNUNET_MESSAGE_TYPE_REGEX_ANNOUNCE
37    */
38   struct GNUNET_MessageHeader header;
39
40   /**
41    * How many characters can we squeeze per edge?
42    */
43   uint16_t compression;
44
45   /**
46    * Always zero.
47    */
48   uint16_t reserved;
49
50   /**
51    * Delay between repeated announcements.
52    */
53   struct GNUNET_TIME_RelativeNBO refresh_delay;
54
55   /* followed by 0-terminated regex as string */
56 };
57
58
59 /**
60  * Message to initiate regex search.
61  */
62 struct RegexSearchMessage
63 {
64   /**
65    * Type is GNUNET_MESSAGE_TYPE_REGEX_SEARCH
66    */
67   struct GNUNET_MessageHeader header;
68
69   /* followed by 0-terminated search string */
70
71 };
72
73
74 /**
75  * Result from regex search.
76  */
77 struct ResultMessage
78 {
79   /**
80    * Type is GNUNET_MESSAGE_TYPE_REGEX_RESULT
81    */
82   struct GNUNET_MessageHeader header;
83
84   /**
85    * Number of entries in the GET path.
86    */
87   uint16_t get_path_length;
88
89   /**
90    * Number of entries in the PUT path.
91    */
92   uint16_t put_path_length;
93
94   /**
95    * Identity of the peer that was found.
96    */
97   struct GNUNET_PeerIdentity id;
98
99   /* followed by GET path and PUT path arrays */
100
101 };
102
103
104 /* end of regex_ipc.h */
105 #endif