summaryrefslogtreecommitdiff
path: root/src/twister/twister.h
blob: 01f9363857bc4ecd2a7798105def11786d4359cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
/*
     This file is part of GNUnet.
     Copyright (C) 2018 Taler Systems SA

     Twister is free software; you can redistribute it and/or
     modify it under the terms of the GNU General Public License
     as published by the Free Software Foundation; either version
     3, or (at your option) any later version.

     Twister is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty
     of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
     the GNU General Public License for more details.

     You should have received a copy of the GNU General Public
     License along with Twister; see the file COPYING.  If not,
     write to the Free Software Foundation, Inc., 51 Franklin
     Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/

/**
 * @author
 * @file twister.h
 *
 * @brief Common type definitions
 */
#ifndef TWISTER_H
#define TWISTER_H

#include <gnunet/gnunet_common.h>

/**
 * Max length for a JSON path.
 */
#define TWISTER_PATH_LENGTH 100

/**
 * Max lenght for JSON values to use in place of the originals.
 */
#define TWISTER_VALUE_LENGTH 100

#define TWISTER_MESSAGE_TYPE_ACKNOWLEDGEMENT 1

#define TWISTER_MESSAGE_TYPE_SET_RESPONSE_CODE 2

#define TWISTER_MESSAGE_TYPE_DELETE_PATH 3

#define TWISTER_MESSAGE_TYPE_MODIFY_PATH_DL 4

#define TWISTER_MESSAGE_TYPE_MODIFY_PATH_UL 5

#define TWISTER_MESSAGE_TYPE_MALFORM 6

#define TWISTER_MESSAGE_TYPE_MALFORM_UPLOAD 7

#define TWISTER_MESSAGE_TYPE_FLIP_PATH_DL 8

#define TWISTER_MESSAGE_TYPE_FLIP_PATH_UL 9

GNUNET_NETWORK_STRUCT_BEGIN
struct TWISTER_Malform
{
  /**
   * Type: #TWISTER_MESSAGE_TYPE_MALFORM
   */
  struct GNUNET_MessageHeader header;

};
GNUNET_NETWORK_STRUCT_END

GNUNET_NETWORK_STRUCT_BEGIN
struct TWISTER_ModifyPath
{
  /**
   * Type: #TWISTER_MESSAGE_TYPE_DELETE_PATH
   */
  struct GNUNET_MessageHeader header;

  /**
   * Path to the object to modify.
   */
  char path[TWISTER_PATH_LENGTH];

  /**
   * New value to use.
   */
  char value[TWISTER_VALUE_LENGTH];
};
GNUNET_NETWORK_STRUCT_END


GNUNET_NETWORK_STRUCT_BEGIN

/**
 * Network size estimate sent from the service
 * to clients.  Contains the current size estimate
 * (or 0 if none has been calculated) and the
 * standard deviation of known estimates.
 *
 */
struct TWISTER_FlipPath
{
  /**
   * Type: #TWISTER_MESSAGE_TYPE_DELETE_PATH
   */
  struct GNUNET_MessageHeader header;
};

GNUNET_NETWORK_STRUCT_END



GNUNET_NETWORK_STRUCT_BEGIN

/**
 * Network size estimate sent from the service
 * to clients.  Contains the current size estimate
 * (or 0 if none has been calculated) and the
 * standard deviation of known estimates.
 *
 */
struct TWISTER_DeletePath
{
  /**
   * Type: #TWISTER_MESSAGE_TYPE_DELETE_PATH
   */
  struct GNUNET_MessageHeader header;
};
GNUNET_NETWORK_STRUCT_END


GNUNET_NETWORK_STRUCT_BEGIN

/**
 * Network size estimate sent from the service
 * to clients.  Contains the current size estimate
 * (or 0 if none has been calculated) and the
 * standard deviation of known estimates.
 *
 */
struct TWISTER_SetResponseCode
{
  /**
   * Type: #TWISTER_MESSAGE_TYPE_SET_RESPONSE_CODE
   */
  struct GNUNET_MessageHeader header;

  /**
   * The new response code, in big endian.
   */
  uint32_t response_code GNUNET_PACKED;

};
GNUNET_NETWORK_STRUCT_END


#endif