SendToKeyListener Class Reference

Inheritance diagram for SendToKeyListener:

LookupListener List of all members.

Public Member Functions

 SendToKeyListener (BaseOverlay *overlay, BaseOverlayMessage *msg)
 ~SendToKeyListener ()
virtual void lookupFinished (AbstractLookup *lookup)

Private Attributes

BaseOverlayoverlay
BaseOverlayMessage * msg

Constructor & Destructor Documentation

SendToKeyListener::SendToKeyListener ( BaseOverlay overlay,
BaseOverlayMessage *  msg 
) [inline]

00970     {
00971         this->overlay = overlay;
00972         this->msg = msg;
00973         pendingLookups++;
00974     }

SendToKeyListener::~SendToKeyListener (  )  [inline]

00977     {
00978         this->overlay = NULL;
00979         this->msg = NULL;
00980     }


Member Function Documentation

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     }


Member Data Documentation

BaseOverlay* SendToKeyListener::overlay [private]

BaseOverlayMessage* SendToKeyListener::msg [private]


The documentation for this class was generated from the following file:
Generated on Tue Jul 24 16:51:19 2007 for ITM OverSim by  doxygen 1.5.1