Ignore:
Timestamp:
Jun 18, 2012, 1:40:59 PM (12 years ago)
Author:
Michael Tänzer
Message:

Fix DHT: messages got lost if not communicating over a direct link.

Also:

  • Fix mem leak
  • Code clean up
Location:
source/ariba/overlay/modules
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • source/ariba/overlay/modules/OverlayInterface.h

    r8606 r10572  
    145145         */
    146146        virtual const LinkID& getNextLinkId( const NodeID& id ) const = 0;
     147       
     148        /**
     149         * Returns the NodeID of the next hop a route message would take.
     150         *
     151         * @param id The destination node id
     152         * @return The node id of the next hop
     153         */
     154        virtual const NodeID& getNextNodeId( const NodeID& id ) const;
    147155
    148156        //--- functions from CommunicationListener that we _can_ use as overlay ---
  • source/ariba/overlay/modules/chord/Chord.cpp

    r7744 r10572  
    201201}
    202202
     203/// @see OverlayInterface.h
     204const NodeID& Chord::getNextNodeId( const NodeID& id ) const {
     205        // get next hop
     206        const route_item* item = table->get_next_hop(id);
     207       
     208        // return unspecified if no next hop could be found
     209        if (item == NULL) {
     210                return NodeID::UNSPECIFIED;
     211        }
     212       
     213        return item->id;
     214}
     215
    203216OverlayInterface::NodeList Chord::getKnownNodes(bool deep) const {
    204217        OverlayInterface::NodeList nodelist;
  • source/ariba/overlay/modules/chord/Chord.h

    r6854 r10572  
    104104        /// @see OverlayInterface.h
    105105        virtual const LinkID& getNextLinkId( const NodeID& id ) const;
     106       
     107        /// @see OverlayInterface.h
     108        virtual const NodeID& getNextNodeId( const NodeID& id ) const;
    106109
    107110        /// @see OverlayInterface.h
  • source/ariba/overlay/modules/onehop/OneHop.cpp

    r8620 r10572  
    122122}
    123123
     124/// @see OverlayInterface.h
     125const NodeID& OneHop::getNextNodeId( const NodeID& id ) const {
     126        OverlayNodeMapping::const_iterator i = overlayNodes.find( id );
     127       
     128        // FIXME: in case the NodeID is not known we should return the nearest node
     129        if (i == overlayNodes.end()) {
     130                return NodeID::UNSPECIFIED;
     131        }
     132       
     133        return i->first;
     134}
     135
    124136void OneHop::createOverlay() {
    125137        // don't need to bootstrap against ourselfs.
  • source/ariba/overlay/modules/onehop/OneHop.h

    r6266 r10572  
    8585        /// @see OverlayInterface.h
    8686        virtual const LinkID& getNextLinkId( const NodeID& id ) const;
     87       
     88        /// @see OverlayInterface.h
     89        virtual const NodeID& getNextNodeId( const NodeID& id ) const;
    8790
    8891        /// @see OverlayInterface.h
Note: See TracChangeset for help on using the changeset viewer.