-
Notifications
You must be signed in to change notification settings - Fork 0
/
HChord_L.h
161 lines (106 loc) · 4.02 KB
/
HChord_L.h
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
#ifndef __HCHORD_L_H_
#define __HCHORD_L_H_
#include <BaseOverlay.h>
#include "HChordMessage_m.h"
//#include "HChord_U.h"
//
class HChord_U;
class HChordSuccessorList;
class HChordFingerTable;
enum States {
INIT = 0,
JOINING_1 = 1,
JOINING_2 = 2,
JOINING_3 = 3,
READY = 4,
REFRESH = 5,
SHUTDOWN = 6,
//some aliases for compatibility
JOINING = JOINING_1,
JOIN = JOINING_1,
BOOTSTRAP = JOINING_1,
RSET = JOINING_2,
BSET = JOINING_3
};
class HChord_L : public cSimpleModule
{
public:
HChord_L();
virtual ~HChord_L();
virtual void finishOverlay();
virtual void initializeOverlay(int stage,NodeHandle curr_node);
virtual void handleMessage(cMessage* msg);
//virtual void handleUDPMessage(cMessage* msg);
// virtual void recordOverlaySentStats(BaseOverlayMessage* msg);
// virtual void finishOverlay();
//OverlayKey distance(const OverlayKey& x, const OverlayKey& y) const;
virtual void updateTooltip();
protected:
int joinRetry; /**< */
int stabilizeRetry; /**< // retries before neighbor considered failed */
double joinDelay; /**< */
double stabilizeDelay; /**< stabilize interval (secs) */
double fixfingersDelay; /**< */
int successorListSize; /**< */
bool aggressiveJoinMode; /**< use modified (faster) JOIN protocol */
bool extendedFingerTable;
unsigned int numFingerCandidates;
// timer messages
cMessage* join_timer; /**< */
cMessage* stabilize_timer; /**< */
cMessage* fixfingers_timer; /**< */
// statistics
int joinCount;
int stabilizeCount;
int fixfingersCount;
int notifyCount;
int newsuccessorhintCount; /**< */
int joinBytesSent; /**< */
int stabilizeBytesSent; /**< */
int notifyBytesSent; /**< */
int fixfingersBytesSent; /**< */
int newsuccessorhintBytesSent; /**< */
int state;
int keyLength;
int missingPredecessorStabRequests;
int missingSuccessorStabResponses;
// node references
NodeHandle thisNode;
NodeHandle predecessorNode;
NodeHandle bootstrapNode;
NodeHandle SuperPeerNode;
NodeHandle SuperPeerPre;
// module references
HChordFingerTable* fingerTable;
HChordSuccessorList* successorList;
HChord_U *upper;
// chord routines
void handleUDPMessage(cMessage *msg);
void sendMessageToUDP(NodeHandle dest , cMessage *msg);
//virtual void joinOverlay();
//virtual void changeState(int toState);
virtual void findFriendModules();
virtual void initializeFriendModules();
//virtual void handleJoinTimerExpired(cMessage* msg);
virtual void handleStabilizeTimerExpired(cMessage* msg);
virtual void handleFixFingersTimerExpired(cMessage* msg);
virtual void handleNewSuccessorHint(HNewSuccessorHintMsg * Msg);
virtual NodeHandle closestPreceedingNode(const OverlayKey& key);
NodeHandle findNode_h(const OverlayKey& key,int numRedundantNodes,int numSiblings,BaseOverlayMessage* msg);
//NodeVector * findNode(const OverlayKey& key, int numRedundantNodes, int numSiblings, BaseOverlayMessage* msg=NULL);
virtual bool isSiblingFor(const NodeHandle& node,const OverlayKey& key,int numSiblings, bool* err);
int getMaxNumSiblings();
int getMaxNumRedundantNodes();
virtual void handleJoinRequest(HJoinCall *call);
virtual void handleJoinResponse(HJoinResponse * joinResponse);
virtual void processJoinRequest(HJoinCall *joinCall);
virtual void handleNotifyCall ( HNotifyCall* call );
virtual void handleNotifyResponse(HNotifyResponse* notifyResponse);
virtual void handleStabilizeCall( HStabilizeCall* call );
virtual void handleStabilizeResponse(HStabilizeResponse* stabilizeResponse);
virtual void handleFixfingersCall ( HFixfingersCall* call );
virtual void handleFixfingersResponse(HFixfingersResponse* fixfingersResponse);
friend class HChordSuccessorList;
friend class HChord_U;
};
#endif