-
Notifications
You must be signed in to change notification settings - Fork 0
/
HChordMessage.msg
262 lines (198 loc) · 4.81 KB
/
HChordMessage.msg
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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
cplusplus {{
#include <IPvXAddress.h>
#include <NodeHandle.h>
#include <CommonMessages_m.h>
// constants for message length in bit
static const int HCHORDCOMMAND_L = 8;
static const int SUCNUM_L = 8;
static const int FINGER_L = 8;
static const int STEP_L = 8;
static const int DBNODESET_L = 1;
static const int OTHERLOOKUP_L = 1;
static const int PRENODESET_L = 1;
static const int OVERLAY_L=8;
//static const int OVERLAY_CTRL_L=sizeof(OverlayCtrlInfo);
#define HCHORD_L(msg) (BASEOVERLAY_L(msg) + NODEHANDLE_L*2 + OVERLAY_L*2 )
#define HNEWSUCCESSORHINT_L(msg) (BASEOVERLAY_L(msg) + NODEHANDLE_L*3 + OVERLAY_L*2 )
#define HNOTIFYCALL_L(msg) (HCHORD_L(msg) + DBNODESET_L)
#define HNOTIFYRESPONSE_L(msg) (HCHORD_L(msg) + SUCNUM_L + NODEHANDLE_L + (msg->getSucNodeArraySize() * NODEHANDLE_L) )
#define HJOINCALL_L(msg) (BASEOVERLAY_L(msg) + NODEHANDLE_L*2 + OVERLAY_L*2 )
#define HJOINRESPONSE_L(msg) (BASEOVERLAY_L(msg) + NODEHANDLE_L*2 + OVERLAY_L*2 + SUCNUM_L + NODEHANDLE_L + (msg->getSucNodeArraySize() * NODEHANDLE_L))
#define HSTABILIZECALL_L(msg) ( BASEOVERLAY_L(msg) + NODEHANDLE_L*2 + OVERLAY_L*2)
#define HSTABILIZERESPONSE_L(msg) (HCHORD_L(msg) + NODEHANDLE_L)
#define HFIXFINGERSCALL_L(msg) (BASEOVERLAY_L(msg) + NODEHANDLE_L*2 + OVERLAY_L*2 + FINGER_L)
#define HFIXFINGERSRESPONSE_L(msg) (HCHORD_L(msg) + FINGER_L + (msg->getSucNodeArraySize() * NODEHANDLE_L))
#define JOIN_REQUEST 0
#define JOIN_RESPONSE 1
#define NEW_SUCCESSOR_HINT 2
#define STABILIZE_CALL 3
#define STABILIZE_RESPONSE 4
#define FIXFINGERS_CALL 5
#define FIXFINGERS_RESPONSE 6
#define NOTIFY_CALL 7
#define NOTIFY_RESPONSE 8
#define MIGRATE_REQUEST 9
#define MIGRATE_RESPONSE 10
#define STABILIZE_SUPER_PEER_CALL 11
#define STABILIZE_SUPER_PEER_RESPONSE 12
#define LARGEST_NODE_REQUEST 13
#define LARGEST_NODE_RESPONSE 14
#define CHANGE_PRE 15
#define CHANGE_SUC_REQ 16
#define CHANGE_SUC_RES 17
}};
class noncobject IPvXAddress;
class noncobject NodeHandle;
class noncobject OverlayKey;
class BaseOverlayMessage;
//
// Base message for all messages used by HChord
//
message HChordMessage extends BaseOverlayMessage
{
fields:
NodeHandle src;
NodeHandle dest;
int mesg_type;
};
//
// Message used to inform about a new successor node
//
message HJoinCall extends HChordMessage
{
};
//
// Message used to answer to a JoinCall message
//
message HJoinResponse extends HChordMessage
{
fields:
int sucNum; // number of entries in the successor list
NodeHandle sucNode[]; // successor list of the message originator
NodeHandle preNode; // in aggressiveJoinMode: predecessor hint
NodeHandle superPeerNode;
NodeHandle superPeerPre;
};
message HNotifyCall extends HChordMessage
{
};
message HNotifyResponse extends HChordMessage
{
fields:
NodeHandle srcNode;
NodeHandle sucNode[];
int sucNum;
};
message HNewSuccessorHintMsg extends HChordMessage
{
fields:
NodeHandle pre;
}
message HStabilizeCall extends HChordMessage
{
};
message HStabilizeResponse extends HChordMessage
{
fields:
NodeHandle pre;
};
message HFixfingersCall extends HChordMessage
{
fields:
int finger;
OverlayKey lookupKey;
};
message HFixfingersResponse extends HChordMessage
{
fields:
int finger;
NodeHandle sucNode;
};
message HMigrateRequest extends HChordMessage
{
};
message HMigrateResponse extends HChordMessage
{
};
message HStabilizeSuperPeerCall extends HChordMessage
{
fields:
bool largest;
NodeHandle Suc;
};
message HStabilizeSuperPeerResponse extends HChordMessage
{
fields:
NodeHandle strongPeers[];
NodeHandle preNode;
int num;
};
message HLargestNodeRequest extends HChordMessage
{
};
message HLargestNodeResponse extends HChordMessage
{
fields:
NodeHandle node;
NodeHandle suc;
};
message HChangePredecessor extends HChordMessage
{
fields:
NodeHandle newPre;
};
message HChangeSuccessorRequest extends HChordMessage
{
fields:
NodeHandle newSuc;
NodeHandle newPre;
}
message HChangeSuccessorResponse extends HChordMessage
{
fields:
NodeHandle newSuc;
NodeHandle newPre;
}
message UHJoinCall extends HJoinCall
{
fields:
NodeHandle LowerNewSuc;
};
message UHJoinResponse extends HJoinResponse
{
fields:
NodeHandle LowerNewSuc;
};
message UHNotifyCall extends HNotifyCall
{
};
message UHNotifyResponse extends HNotifyResponse
{
};
message UHStabilizeCall extends HStabilizeCall
{
};
message UHStabilizeResponse extends HStabilizeResponse
{
};
message UHFixfingersCall extends HFixfingersCall
{
};
message UHFixfingersResponse extends HFixfingersResponse
{
};
message UHNewSuccessorHintMsg extends HNewSuccessorHintMsg
{
};
message LHStabilizeCall extends HStabilizeCall
{
};
message LHStabilizeResponse extends HStabilizeResponse
{
};
message LHFixfingersCall extends UHFixfingersCall
{
};
message LHFixfingersResponse extends HFixfingersResponse
{
};