Koorde.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00024 #ifndef __KOORDE_H_
00025 #define __KOORDE_H_
00026
00027 #include <omnetpp.h>
00028
00029 #include <IPvXAddress.h>
00030
00031 #include <OverlayKey.h>
00032 #include <NodeHandle.h>
00033 #include <BaseOverlay.h>
00034
00035 #include "../chord/ChordSuccessorList.h"
00036 #include "../chord/Chord.h"
00037
00038 namespace oversim {
00039
00050 class Koorde : public Chord
00051 {
00052 public:
00053 virtual ~Koorde();
00054
00055
00056 virtual void initializeOverlay(int stage);
00057
00058
00059 virtual void handleTimerEvent(cMessage* msg);
00060
00061
00062 virtual void handleUDPMessage(BaseOverlayMessage* msg);
00063
00064
00065 virtual void recordOverlaySentStats(BaseOverlayMessage* msg);
00066
00067
00068 virtual void finishOverlay();
00069
00073 virtual void updateTooltip ();
00074
00075 protected:
00076
00077 int deBruijnDelay;
00078 int deBruijnNumber;
00079 int deBruijnListSize;
00080 int shiftingBits;
00081 bool useOtherLookup;
00082 bool useSucList;
00083 bool breakLookup;
00084 bool setupDeBruijnBeforeJoin;
00085 bool setupDeBruijnAtJoin;
00087
00088 int deBruijnCount;
00089 int deBruijnBytesSent;
00091
00092 NodeHandle* deBruijnNodes;
00093 NodeHandle deBruijnNode;
00095
00096 cMessage* deBruijn_timer;
00103 virtual void changeState(int state);
00104
00109 virtual void handleDeBruijnTimerExpired();
00110
00116
00117
00118
00119 virtual bool handleRpcCall(BaseCallMessage* msg);
00120
00121
00122 virtual void handleRpcResponse(BaseResponseMessage* msg,
00123 cPolymorphic* context, int rpcId,
00124 simtime_t rtt );
00125
00126
00127 virtual void handleRpcTimeout(BaseCallMessage* msg,
00128 const TransportAddress& dest,
00129 cPolymorphic* context,
00130 int rpcId, const OverlayKey& destKey);
00131
00137 virtual void handleRpcJoinResponse(JoinResponse* joinResponse);
00138
00144 virtual void handleRpcDeBruijnRequest(DeBruijnCall* deBruinCall);
00145
00151 virtual void handleRpcDeBruijnResponse(DeBruijnResponse* deBruijnResponse);
00152
00158 virtual void handleDeBruijnTimeout(DeBruijnCall* deBruijnCall);
00159
00168 virtual NodeHandle findDeBruijnHop(const OverlayKey& destKey,
00169 KoordeFindNodeExtMessage* findNodeExt);
00170
00171
00172 NodeVector* findNode(const OverlayKey& key,
00173 int numRedundantNodes,
00174 int numSiblings,
00175 BaseOverlayMessage* msg);
00186 virtual OverlayKey findStartKey(const OverlayKey& startKey,
00187 const OverlayKey& endKey,
00188 const OverlayKey& destKey,
00189 int& step);
00190
00200 virtual const NodeHandle& walkDeBruijnList(const OverlayKey& key);
00201
00211 virtual const NodeHandle& walkSuccessorList(const OverlayKey& key);
00212
00213
00214 virtual bool handleFailedNode(const TransportAddress& failed);
00215
00216
00217 virtual void rpcJoin(JoinCall* call);
00218
00219
00220 virtual void findFriendModules();
00221
00222
00223 virtual void initializeFriendModules();
00224
00225 };
00226
00227 };
00228
00229 #endif
00230