KBRTestApp.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 __KBRTESTAPP_H_
00025 #define __KBRTESTAPP_H_
00026
00027 #include <omnetpp.h>
00028
00029 #include <OverlayKey.h>
00030
00031 #include "BaseApp.h"
00032
00033 class KBRTestMessage;
00034 class KbrTestCall;
00035
00043 class KBRTestApp : public BaseApp
00044 {
00045 public:
00046 KBRTestApp();
00047 ~KBRTestApp();
00048
00049 private:
00050
00055 struct MsgHandle
00056 {
00057 OverlayKey key;
00058 int seqNum;
00059
00060 MsgHandle(void) :
00061 key(OverlayKey::UNSPECIFIED_KEY), seqNum(-1) {};
00062 MsgHandle(const OverlayKey& key, int seqNum) :
00063 key(key), seqNum(seqNum) {};
00064 bool operator==(const MsgHandle& rhs) const {
00065 return ((key == rhs.key) && (seqNum == rhs.seqNum));
00066 };
00067 MsgHandle& operator=(const MsgHandle& rhs) {
00068 key = rhs.key;
00069 seqNum = rhs.seqNum;
00070 return (*this);
00071 };
00072 };
00073 typedef std::vector<MsgHandle> MsgHandleBuf;
00074
00075 void initializeApp(int stage);
00076 void finishApp();
00077 void handleTimerEvent(cMessage* msg);
00078
00079 void deliver(OverlayKey& key, cMessage* msg);
00080
00081 void forward(OverlayKey* key, cPacket** msg, NodeHandle* nextHopNode);
00082
00092 bool checkSeen(const OverlayKey& key, int seqNum);
00093
00104 void evaluateData(simtime_t timeDelay, int hopCount, long int bytes);
00105
00106 bool handleRpcCall(BaseCallMessage* msg);
00107 void kbrTestCall(KbrTestCall* call);
00108
00109 void handleRpcResponse(BaseResponseMessage* msg, cPolymorphic* context,
00110 int rpcId, simtime_t rtt);
00111
00112 void handleRpcTimeout(BaseCallMessage* msg,
00113 const TransportAddress& dest,
00114 cPolymorphic* context, int rpcId,
00115 const OverlayKey& destKey);
00116
00117 void handleLookupResponse(LookupResponse* msg,
00118 cObject* context, simtime_t latency);
00119
00120 void pingResponse(PingResponse* response, cPolymorphic* context,
00121 int rpcId, simtime_t rtt);
00122
00123
00124 virtual void handleNodeLeaveNotification();
00125
00126 std::pair<OverlayKey, TransportAddress> createDestKey();
00127
00128 bool kbrOneWayTest;
00129 bool kbrRpcTest;
00130 bool kbrLookupTest;
00131
00132 int testMsgSize;
00133 double mean;
00134 double deviation;
00135 bool activeNetwInitPhase;
00136 bool lookupNodeIds;
00137 bool nodeIsLeavingSoon;
00138 bool onlyLookupInoffensiveNodes;
00139
00140 uint32_t numSent;
00141 uint32_t bytesSent;
00142 uint32_t numDelivered;
00143 uint32_t bytesDelivered;
00144 uint32_t numDropped;
00145 uint32_t bytesDropped;
00146
00147 uint32_t numRpcSent;
00148 uint32_t bytesRpcSent;
00149 uint32_t numRpcDelivered;
00150 uint32_t bytesRpcDelivered;
00151 uint32_t numRpcDropped;
00152 uint32_t bytesRpcDropped;
00153
00154 simtime_t rpcSuccLatencySum;
00155 uint32_t rpcSuccLatencyCount;
00156
00157 simtime_t rpcTotalLatencySum;
00158 uint32_t rpcTotalLatencyCount;
00159
00160 uint32_t numLookupSent;
00161 uint32_t numLookupSuccess;
00162 uint32_t numLookupFailed;
00163
00164
00165
00166 cMessage* onewayTimer;
00167 cMessage* rpcTimer;
00168 cMessage* lookupTimer;
00169
00170 simtime_t failureLatency;
00172 uint32_t sequenceNumber;
00173 int msgHandleBufSize;
00174 MsgHandleBuf mhBuf;
00175 MsgHandleBuf::iterator mhBufBegin;
00176 MsgHandleBuf::iterator mhBufNext;
00177 MsgHandleBuf::iterator mhBufEnd;
00178 };
00179
00180 #endif