
Public Member Functions | |
| SendToKeyListener (BaseOverlay *overlay, BaseOverlayMessage *msg) | |
| ~SendToKeyListener () | |
| virtual void | lookupFinished (AbstractLookup *lookup) |
Private Attributes | |
| BaseOverlay * | overlay |
| BaseOverlayMessage * | msg |
| GlobalStatistics * | globalStatistics |
Definition at line 1159 of file BaseOverlay.cc.
| SendToKeyListener::SendToKeyListener | ( | BaseOverlay * | overlay, | |
| BaseOverlayMessage * | msg | |||
| ) | [inline] |
Definition at line 1166 of file BaseOverlay.cc.
01166 { 01167 this->overlay = overlay; 01168 this->msg = msg; 01169 globalStatistics = overlay->globalStatistics; 01170 pendingLookups++; 01171 }
| SendToKeyListener::~SendToKeyListener | ( | ) | [inline] |
Definition at line 1173 of file BaseOverlay.cc.
01173 { 01174 pendingLookups--; 01175 overlay = NULL; 01176 if (msg != NULL) { 01177 delete msg; 01178 msg = NULL; 01179 } 01180 }
| virtual void SendToKeyListener::lookupFinished | ( | AbstractLookup * | lookup | ) | [inline, virtual] |
Implements LookupListener.
Definition at line 1182 of file BaseOverlay.cc.
01182 { 01183 if (dynamic_cast<BaseRouteMessage*>(msg)) { 01184 BaseRouteMessage* routeMsg = static_cast<BaseRouteMessage*>(msg); 01185 if (lookup->isValid()) { 01186 if (lookup->getResult().size()==0) { 01187 EV << "[SendToKeyListener::lookupFinished()]\n" 01188 " [ERROR] SendToKeyListener: Valid result, " 01189 "but empty array." << endl; 01190 } else { 01191 routeMsg->setHopCount(routeMsg->getHopCount() 01192 + lookup->getAccumulatedHops()); 01193 01194 for (uint32_t i=0; i<lookup->getResult().size(); i++) { 01195 overlay->sendRouteMessage(lookup->getResult()[i], 01196 static_cast<BaseRouteMessage*> 01197 (routeMsg->dup()), 01198 overlay->routeMsgAcks); 01199 } 01200 } 01201 } else { 01202 EV << "[SendToKeyListener::lookupFinished()]\n" 01203 << " Lookup failed - dropping message" 01204 << endl; 01205 //std::cout << simTime() << " " 01206 // << routeMsg->getSrcNode() 01207 // << " [SendToKeyListener::lookupFinished()]\n" 01208 // << " Lookup failed - dropping message" 01209 // << std::endl; 01210 RECORD_STATS(overlay->numDropped++; 01211 overlay->bytesDropped += routeMsg->getByteLength()); 01212 } 01213 } else if (dynamic_cast<LookupCall*>(msg)) { 01214 LookupCall* call = static_cast<LookupCall*>(msg); 01215 LookupResponse* response = new LookupResponse(); 01216 response->setKey(call->getKey()); 01217 response->setHopCount(lookup->getAccumulatedHops()); 01218 if (lookup->isValid()) { 01219 response->setIsValid(true); 01220 response->setSiblingsArraySize(lookup->getResult().size()); 01221 for (uint32_t i=0; i<lookup->getResult().size(); i++) { 01222 response->setSiblings(i, lookup->getResult()[i]); 01223 } 01224 if (lookup->getResult().size() == 0) { 01225 EV << "[SendToKeyListener::lookupFinished() @ " 01226 << overlay->thisNode.getAddress() 01227 << " (" << overlay->thisNode.getKey().toString(16) << ")]\n" 01228 << " LookupCall " 01229 << call->getNonce() 01230 << " failed! (size=0)" << endl; 01231 } 01232 } else { 01233 response->setIsValid(false); 01234 EV << "[SendToKeyListener::lookupFinished() @ " 01235 << overlay->thisNode.getAddress() 01236 << " (" << overlay->thisNode.getKey().toString(16) << ")]\n" 01237 << " LookupCall " 01238 << call->getNonce() 01239 << " failed!" << endl; 01240 } 01241 overlay->sendRpcResponse(call, response); 01242 msg = NULL; 01243 } else { 01244 throw cRuntimeError("SendToKeyListener::lookupFinished(): " 01245 "Unknown message type!"); 01246 } 01247 delete this; 01248 }
BaseOverlayMessage* SendToKeyListener::msg [private] |
Definition at line 1163 of file BaseOverlay.cc.
Referenced by lookupFinished(), and ~SendToKeyListener().
BaseOverlay* SendToKeyListener::overlay [private] |
Definition at line 1162 of file BaseOverlay.cc.
Referenced by lookupFinished(), and ~SendToKeyListener().
1.5.8