Ignore:
Timestamp:
Apr 23, 2009, 9:18:12 AM (15 years ago)
Author:
Christoph Mayer
Message:

-mehrere Fixes, Tickets #25 (bind listeners earlier), #21 (better pingpong), #40 (systemqueue misbehavior)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • source/ariba/overlay/BaseOverlay.cpp

    r3037 r3041  
    4747use_logging_cpp(BaseOverlay);
    4848
    49 BaseOverlay::BaseOverlay( BaseCommunication& _basecomm, const NodeID& _nodeid )
    50         :       bc( _basecomm ), nodeId( _nodeid ), spovnetId( SpoVNetID::UNSPECIFIED), overlayInterface( NULL ),
    51                 initiatorLink( LinkID::UNSPECIFIED ), state( BaseOverlayStateInvalid ) {
     49BaseOverlay::BaseOverlay()
     50        : bc(NULL), overlayInterface(NULL),
     51                nodeId(NodeID::UNSPECIFIED), spovnetId(SpoVNetID::UNSPECIFIED),
     52                initiatorLink(LinkID::UNSPECIFIED), state(BaseOverlayStateInvalid){
     53}
     54
     55BaseOverlay::~BaseOverlay(){
     56}
     57
     58void BaseOverlay::start( BaseCommunication& _basecomm, const NodeID& _nodeid ){
     59
     60        bc = &_basecomm;
     61        nodeId = _nodeid;
    5262
    5363        logging_info("creating base overlay");
    5464
    55         bc.registerMessageReceiver( this );
    56         bc.registerEventListener( this );
     65        bc->registerMessageReceiver( this );
     66        bc->registerEventListener( this );
    5767
    5868        ovl.visCreate( ovlId, nodeId, string(""), string("") );
     
    7585}
    7686
    77 BaseOverlay::~BaseOverlay() {
     87void BaseOverlay::stop() {
    7888
    7989        logging_info("deleting base overlay");
    8090
    8191        Timer::stop();
    82         bc.unregisterMessageReceiver( this );
    83         bc.unregisterEventListener( this );
     92        bc->unregisterMessageReceiver( this );
     93        bc->unregisterEventListener( this );
    8494}
    8595
     
    101111        state = BaseOverlayStateJoinInitiated;
    102112
    103         initiatorLink = bc.establishLink( bootstrapEp );
     113        initiatorLink = bc->establishLink( bootstrapEp );
     114        logging_info("join process initiated for " << id.toString() << "...");
    104115}
    105116
     
    124135                // then, leave the spovnet baseoverlay
    125136                OverlayMsg overMsg( OverlayMsg::OverlayMessageTypeBye, nodeId );
    126                 bc.sendMessage( initiatorLink, &overMsg );
     137                bc->sendMessage( initiatorLink, &overMsg );
    127138
    128139                // drop the link and set to correct state
    129                 bc.dropLink( initiatorLink );
     140                bc->dropLink( initiatorLink );
    130141                initiatorLink = LinkID::UNSPECIFIED;
    131142        }
     
    175186const EndpointDescriptor& BaseOverlay::getEndpointDescriptor(const LinkID& link) const {
    176187
    177         return bc.getEndpointDescriptor( link );
     188        return bc->getEndpointDescriptor( link );
    178189}
    179190
     
    181192
    182193        if( node == nodeId || node == NodeID::UNSPECIFIED )
    183                 return bc.getEndpointDescriptor();
     194                return bc->getEndpointDescriptor();
    184195
    185196        if( overlayInterface == NULL ){
     
    216227
    217228        ServiceInterface* receiver = listenerMux.get( service );
    218         const LinkID link = bc.establishLink( ep );
     229        const LinkID link = bc->establishLink( ep );
    219230
    220231        LinkItem item (link, NodeID::UNSPECIFIED, service, receiver);
     
    237248
    238249        LinkItem item = i->second;
    239         bc.dropLink( link );
     250        bc->dropLink( link );
    240251
    241252        if( item.interface != NULL )
     
    257268
    258269        i->second.markused();
    259         return bc.sendMessage( link, &overmsg );
     270        return bc->sendMessage( link, &overmsg );
    260271}
    261272
     
    349360
    350361                state = BaseOverlayStateJoinInitiated; // state remains in JoinInitiated
    351                 bc.sendMessage( id, &overMsg );
     362                bc->sendMessage( id, &overMsg );
    352363
    353364                return;
     
    384395                        );
    385396
    386                 bc.sendMessage( id, &overMsg );
     397                bc->sendMessage( id, &overMsg );
    387398                i->second.markused();
    388399
     
    555566
    556567                retmsg.encapsulate(&replyMsg);
    557                 bc.sendMessage( link, &retmsg );
     568                bc->sendMessage( link, &retmsg );
    558569
    559570                return true;
     
    597608                if( ! replyMsg->getJoinAllowed() ){
    598609
    599                         logging_warn( "our join request has been denied" );
    600 
    601                         bc.dropLink( initiatorLink );
     610                        logging_error( "our join request has been denied" );
     611
     612                        bc->dropLink( initiatorLink );
    602613                        initiatorLink = LinkID::UNSPECIFIED;
    603614                        state = BaseOverlayStateInvalid;
     
    624635                        logging_error( "overlay structure not supported" );
    625636
    626                         bc.dropLink( initiatorLink );
     637                        bc->dropLink( initiatorLink );
    627638                        initiatorLink = LinkID::UNSPECIFIED;
    628639                        state = BaseOverlayStateInvalid;
     
    698709                if( changed ){
    699710                        OverlayMsg overMsg( OverlayMsg::OverlayMessageTypeUpdate, i->second.service, nodeId );
    700                         bc.sendMessage( link, &overMsg );
     711                        bc->sendMessage( link, &overMsg );
    701712                }
    702713
     
    744755                if( overlayMsg->getSourceNode() == spovnetInitiator ){
    745756
    746                         bc.dropLink( initiatorLink );
     757                        bc->dropLink( initiatorLink );
    747758                        initiatorLink = LinkID::UNSPECIFIED;
    748759                        state = BaseOverlayStateInvalid;
     
    800811        for( ; i != iend; i++ ){
    801812                if( *i == nodeId) continue; // don't send to ourselfs
    802                 sendMessage( message, *i, service ); // TODO: sollte auto links aufbauen fÃŒr sowas
     813                sendMessage( message, *i, service );
    803814        }
    804815}
     
    857868void BaseOverlay::incomingRouteMessage(Message* msg){
    858869        // gets handled as normal data message
    859         // TODO: passt das so?
    860870        receiveMessage( msg, LinkID::UNSPECIFIED, NodeID::UNSPECIFIED );
    861871}
Note: See TracChangeset for help on using the changeset viewer.