Changeset 5884 for source/ariba/overlay


Ignore:
Timestamp:
Aug 12, 2009, 2:52:12 PM (15 years ago)
Author:
mies
Message:
 
Location:
source/ariba/overlay
Files:
2 edited

Legend:

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

    r5883 r5884  
    141141        time_t now = time(NULL);
    142142        BOOST_FOREACH( LinkDescriptor* ld, links ) {
    143                 // remote used as relay flag
    144                 if ( ld->relaying && difftime( now, ld->timeRelaying ) > 10)
    145                         ld->relaying = false;
    146143
    147144                // keep alives and not up? yes-> link connection request is stale!
     
    160157
    161158                if (!ld->up) continue;
     159
     160                // remote used as relay flag
     161                if ( ld->relaying && difftime( now, ld->timeRelaying ) > 10)
     162                        ld->relaying = false;
    162163
    163164                // drop links that are dropped and not used as relay
     
    240241        } else {
    241242                // destinastion myself? yes-> handle message
    242                 if (message->getDestinationNode() == nodeId)
    243                         handleMessage( message, NULL );
    244                 else
     243                if (message->getDestinationNode() == nodeId) {
     244                        logging_warn("Usually I should not route messages to myself!");
     245                        Message msg;
     246                        msg.encapsulate(message);
     247                        handleMessage( &msg, NULL );
     248                } else {
    245249                        // no->send message to next hop
    246250                        send( message, message->getDestinationNode() );
     251                }
    247252        }
    248253}
     
    331336        const ServiceID& service) {
    332337        message->setSourceNode(nodeId);
     338        message->setDestinationNode(remote);
    333339        message->setService(service);
    334         message->setDestinationNode(remote);
    335340        send( message, remote );
    336341}
     
    343348        }
    344349        message->setSourceNode(nodeId);
     350        message->setDestinationNode(ld->remoteNode);
     351
    345352        message->setSourceLink(ld->overlayId);
     353        message->setDestinationLink(ld->remoteLink);
     354
    346355        message->setService(ld->service);
    347         message->setDestinationNode(ld->remoteNode);
    348         message->setDestinationLink(ld->remoteLink);
    349356        return send( message, ld, ignore_down );
    350357}
     
    14761483        if( overlayMsg == NULL ) return false;
    14771484
     1485        // increase number of hops
     1486        overlayMsg->increaseNumHops();
     1487
    14781488        // refresh relay information
    14791489        refreshRelayInformation( overlayMsg, ld );
    1480 
    1481         // increase number of hops
    1482         overlayMsg->increaseNumHops();
    14831490
    14841491        // update route record
     
    15001507                        << " to " << overlayMsg->getDestinationNode()
    15011508                );
    1502 
    15031509                route( overlayMsg );
    15041510                delete overlayMsg;
  • source/ariba/overlay/modules/chord/Chord.cpp

    r5883 r5884  
    249249                        baseoverlay.dropLink(item->info);
    250250                item->info = lnk;
     251
    251252                // discover neighbors of new overlay neighbor
    252                 discover_neighbors( lnk );
    253253                showLinks();
    254254        } else { // no-> add orphan entry to routing table
    255255                logging_info("new orphan: " << remote.toString()
    256256                                << " with link " << lnk.toString());
    257                 table->insert_orphan(remote)->info = lnk;
     257                item = table->insert_orphan(remote);
     258
     259                // replace with new link
     260                if (!item->info.isUnspecified() || item->info!=lnk)
     261                        baseoverlay.dropLink(item->info);
     262                item->info = lnk;
    258263        }
    259264
     
    373378                                        item = table->get(*table->get_predesessor());
    374379                        }
    375                         if (item == NULL) break;
     380                        if (item == NULL)
     381                                break;
     382
    376383                        logging_debug("Routing discovery message to succ/pred "
    377384                                << item->id.toString() );
Note: See TracChangeset for help on using the changeset viewer.