Inheritance diagram for SendToKeyListener:
Public Member Functions | |
SendToKeyListener (BaseOverlay *overlay, BaseOverlayMessage *msg) | |
~SendToKeyListener () | |
virtual void | lookupFinished (AbstractLookup *lookup) |
Private Attributes | |
BaseOverlay * | overlay |
BaseOverlayMessage * | msg |
SendToKeyListener::SendToKeyListener | ( | BaseOverlay * | overlay, | |
BaseOverlayMessage * | msg | |||
) | [inline] |
SendToKeyListener::~SendToKeyListener | ( | ) | [inline] |
virtual void SendToKeyListener::lookupFinished | ( | AbstractLookup * | lookup | ) | [inline, virtual] |
Implements LookupListener.
00983 { 00984 pendingLookups--; 00985 00986 if (dynamic_cast<BaseRouteMessage*>(msg)) { 00987 BaseRouteMessage* routeMsg = static_cast<BaseRouteMessage*>(msg); 00988 if (lookup->isValid()) { 00989 if (lookup->getResult().size()==0) { 00990 cout << "[ERROR] SendToKeyListener: Valid result, " 00991 "but empty array." << endl; 00992 } else { 00993 routeMsg->setHopCount(routeMsg->getHopCount() 00994 + lookup->getAccumulatedHops()); 00995 00996 for (uint i=0; i<lookup->getResult().size(); i++) { 00997 overlay->sendMessageToUDP(lookup->getResult()[i], 00998 (BaseOverlayMessage*)msg->dup()); 00999 } 01000 } 01001 } else { 01002 EV << "BaseOverlay: Lookup failed!" << endl; 01003 } 01004 delete msg; 01005 } else if (dynamic_cast<LookupCall*>(msg)) { 01006 LookupCall* call = static_cast<LookupCall*>(msg); 01007 LookupResponse* response = new LookupResponse(); 01008 01009 if(lookup->isValid()) { 01010 response->setIsValid(true); 01011 response->setKey(call->getKey()); 01012 response->setSiblingsArraySize(lookup->getResult().size()); 01013 for (uint i=0; i<lookup->getResult().size(); i++) { 01014 response->setSiblings(i, lookup->getResult()[i]); 01015 } 01016 } else { 01017 response->setIsValid(false); 01018 } 01019 overlay->sendRpcResponse(RPC_TO_UPPERTIER, call, response); 01020 01021 } else { 01022 opp_error("SendToKeyListener::lookupFinished(): " 01023 "Unkown message type!"); 01024 } 01025 delete this; 01026 }
BaseOverlay* SendToKeyListener::overlay [private] |
BaseOverlayMessage* SendToKeyListener::msg [private] |