Changeset 3055 for source/ariba/overlay


Ignore:
Timestamp:
Apr 23, 2009, 5:55:59 PM (15 years ago)
Author:
Christoph Mayer
Message:

-temporärer commit, sorry kompiliert nicht :( muss aber die änderungen auf die andere maschine kriegen, ist in ca1h gefixt.

Location:
source/ariba/overlay
Files:
2 deleted
4 edited

Legend:

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

    r3041 r3055  
    4040
    4141#include "ariba/utility/misc/OvlVis.h"
    42 using ariba::utility::OvlVis;
     42#include "ariba/NodeListener.h"
     43#include "ariba/CommunicationListener.h"
    4344
    4445namespace ariba {
     
    146147
    147148        // inform all registered services of the event
    148         BOOST_FOREACH( ServiceInterface* i, listenerMux.getOneList() ){
     149        BOOST_FOREACH( NodeListener* i, nodeListeners ){
    149150                if( ret ) i->onLeaveSuccess( spovnetId );
    150151                else      i->onLeaveFail( spovnetId );
     
    176177
    177178        overlayInterface->joinOverlay();
    178         BOOST_FOREACH( ServiceInterface* i, listenerMux.getOneList() ){
     179        BOOST_FOREACH( NodeListener* i, nodeListeners ){
    179180                i->onJoinSuccess( spovnetId );
    180181        }
     
    221222const LinkID BaseOverlay::establishLink(const EndpointDescriptor& ep, const ServiceID& service){
    222223
    223         if( !listenerMux.contains( service ) ){
     224        if( !communicationListeners.contains( service ) ){
    224225                logging_error( "no registered listener on serviceid " << service.toString() );
    225226                return LinkID::UNSPECIFIED;
    226227        }
    227228
    228         ServiceInterface* receiver = listenerMux.get( service );
     229        CommunicationListener* receiver = communicationListeners.get( service );
    229230        const LinkID link = bc->establishLink( ep );
    230231
     
    308309}
    309310
    310 bool BaseOverlay::bind(ServiceInterface* service, const ServiceID& sid) {
    311 
    312         logging_debug( "binding service " << service << " on serviceid " << sid.toString() );
    313 
    314         if( listenerMux.contains( sid ) ){
    315                 logging_error( "some service already registered for service id " << sid.toString() );
     311void BaseOverlay::bind(CommunicationListener* listener, const ServiceID& sid){
     312        logging_debug( "binding communication listener " << listener
     313                << " on serviceid " << sid.toString() );
     314
     315        if( communicationListeners.contains( sid ) ){
     316                logging_error( "some listener already registered for service id "
     317                        << sid.toString() );
    316318                return false;
    317319        }
    318320
    319         listenerMux.registerItem( service, sid );
     321        communicationListeners.registerItem( listener, sid );
    320322        return true;
    321323}
    322324
    323 ServiceInterface* BaseOverlay::unbind(const ServiceID& sid){
    324 
    325         logging_debug( "unbinding service from serviceid " << sid.toString() );
    326 
    327         if( !listenerMux.contains( sid ) ){
    328                 logging_warn( "cannot unbind service. no service registered on service id " << sid.toString() );
    329                 return NULL;
    330         }
    331 
    332         ServiceInterface* iface = listenerMux.get( sid );
    333         listenerMux.unregisterItem( sid );
    334 
    335         return NULL; //iface;
     325void BaseOverlay::unbind(CommunicationListener* listener, const ServiceID& sid){
     326        logging_debug( "unbinding listener " << listener
     327                << " from serviceid " << sid.toString() );
     328
     329        if( !communicationListeners.contains( sid ) ){
     330                logging_warn( "cannot unbind listener. no listener registered on service id " << sid.toString() );
     331                return;
     332        }
     333
     334        if( communicationListeners.get(sid) != listener ){
     335                logging_warn( "listener bound to service id " << sid.toString()
     336                        << " is different than listener trying to unbind" );
     337                return;
     338        }
     339
     340        communicationListeners.unregisterItem( sid );
     341}
     342
     343void BaseOverlay::bind(NodeListener* listener){
     344        logging_debug( "binding node listener " << listener );
     345
     346        NodeListenerVector::iterator i = nodeListeners.find( listener );
     347        if( i != nodeListeners.end() ){
     348                logging_warn( "node listener " << listener << " is already bound, cannot bind" );
     349                return;
     350        }
     351       
     352        nodeListeners.push_back( listener );
     353}
     354
     355void BaseOverlay::unbind(NodeListener* listener){
     356        logging_debug( "unbinding node listener " << listener );
     357
     358        NodeListenerVector::iterator i = nodeListeners.find( listener );
     359        if( i == nodeListeners.end() ){
     360                logging_warn( "node listener " << listener << " is not bound, cannot unbind" );
     361                return;
     362        }
     363       
     364        nodeListeners.erase( i );
    336365}
    337366
     
    501530
    502531                const ServiceID& service = overlayMsg->getService();
    503                 ServiceInterface* serviceListener = listenerMux.get( service );
     532                CommunicationListener* serviceListener = communicationListeners.get( service );
    504533
    505534                logging_debug( "received data for service " << service.toString() );
     
    544573                bool allow = true;
    545574
    546                 BOOST_FOREACH( ServiceInterface* i, listenerMux.getOneList() ){
     575                BOOST_FOREACH( NodeListener* i, nodeListeners ){
    547576                        allow &= i->isJoinAllowed( overlayMsg->getSourceNode(), spovnetId );
    548577                }
     
    615644
    616645                        // inform all registered services of the event
    617                         BOOST_FOREACH( ServiceInterface* i, listenerMux.getOneList() ){
     646                        BOOST_FOREACH( NodeListener* i, nodeListeners{
    618647                                i->onJoinFail( spovnetId );
    619648                        }
     
    640669
    641670                        // inform all registered services of the event
    642                         BOOST_FOREACH( ServiceInterface* i, listenerMux.getOneList() ){
     671                        BOOST_FOREACH( NodeListener* i, nodeListeners ){
    643672                                i->onJoinFail( spovnetId );
    644673                        }
     
    662691
    663692                // inform all registered services of the event
    664                 BOOST_FOREACH( ServiceInterface* i, listenerMux.getOneList() ){
     693                BOOST_FOREACH( NodeListener* i, nodeListeners ){
    665694                        i->onJoinSuccess( spovnetId );
    666695                }
     
    717746                //
    718747
    719                 if( !listenerMux.contains( service ) ){
     748                if( !communicationListeners.contains( service ) ){
    720749                        logging_warn( "linkup event for service that has not been registered" );
    721750                        return false;
    722751                }
    723752
    724                 ServiceInterface* iface = listenerMux.get( service );
     753                CommunicationListener* iface = communicationListeners.get( service );
    725754                if( iface == NULL ){
    726755                        logging_warn( "linkup event for service that has been registered with a NULL interface" );
     
    762791
    763792                        // inform all registered services of the event
    764                         BOOST_FOREACH( ServiceInterface* i, listenerMux.getOneList() ){
     793                        BOOST_FOREACH( NodeListener* i, nodeListeners ){
    765794                                i->onLeaveFail( spovnetId );
    766795                        }
     
    774803
    775804                        // inform all registered services of the event
    776                         BOOST_FOREACH( ServiceInterface* i, listenerMux.getOneList() ){
     805                        BOOST_FOREACH( NodeListener* i, nodeListeners ){
    777806                                i->onNodeLeave( overlayMsg->getSourceNode(), spovnetId );
    778807                        }
     
    879908                                << node.toString() );
    880909
    881         BOOST_FOREACH( ServiceInterface* i, listenerMux.getOneList() ){
     910        BOOST_FOREACH( NodeListener* i, nodeListeners ){
    882911                i->onNodeJoin( node, spovnetId );
    883912        }
  • source/ariba/overlay/BaseOverlay.h

    r3041 r3055  
    5959#include "ariba/communication/CommunicationEvents.h"
    6060
    61 #include "ariba/interface/ServiceInterface.h"
    62 
    6361#include "ariba/overlay/modules/OverlayInterface.h"
    6462#include "ariba/overlay/modules/OverlayFactory.h"
     
    6765#include "ariba/overlay/messages/JoinRequest.h"
    6866#include "ariba/overlay/messages/JoinReply.h"
     67
     68// forward declerations
     69namespace ariba {
     70        class NodeListener;
     71        class CommunicationListener;
     72
     73        namespace utility {
     74                class OvlVis;
     75        }
     76}
    6977
    7078using std::vector;
     
    7684using std::find;
    7785
     86using ariba::NodeListener;
     87using ariba::CommunicationListener;
     88
    7889using ariba::communication::EndpointDescriptor;
    7990using ariba::communication::BaseCommunication;
    8091using ariba::communication::CommunicationEvents;
    81 
    82 using ariba::interface::ServiceInterface;
    8392
    8493using ariba::overlay::OverlayMsg;
     
    101110using ariba::utility::seqnum_t;
    102111using ariba::utility::Timer;
     112using ariba::utility::OvlVis;
    103113
    104114#define ovl OvlVis::instance()
    105115#define ovlId OvlVis::NETWORK_ID_BASE_OVERLAY
    106 
    107 // needed for friend decleration
    108 // in different namespace
    109 namespace ariba {
    110         class Node;
    111 }
    112116
    113117namespace ariba {
     
    121125
    122126        use_logging_h( BaseOverlay );
    123         friend class ariba::Node;
    124 
    125127public:
    126 
    127128        /**
    128129         * Constructs an empty non-functional base overlay instance
     
    147148        /**
    148149         * Starts a link establishment procedure to the specfied node
     150         * for the service with id service
    149151         *
    150          * @param node The node id
     152         * @param node Destination node id
     153         * @param service Service to connect to
    151154         */
    152155        const LinkID establishLink( const NodeID& node, const ServiceID& service );
    153156
    154157        /**
    155          * TODO
     158         * Starts a link establishment procedure to the specified
     159         * endpoint and to the specified service
    156160         */
    157161        const LinkID establishLink( const EndpointDescriptor& ep, const ServiceID& service );
     
    176180         * Depending on the structure of the overlay, this can be very different.
    177181         */
    178         void broadcastMessage(
    179                 Message* message,
    180                 const ServiceID& service
    181         );
     182        void broadcastMessage( Message* message, const ServiceID& service );
    182183
    183184        /**
     
    200201
    201202        /**
    202          * Registers a receiver.
    203          *
    204          * @param receiver An implementation of the receiver interface
    205          */
    206         bool bind( ServiceInterface* service, const ServiceID& sid );
    207 
    208         /**
    209          * Unregister a receiver.
    210          *
    211          * @param sid The service id to unregister
    212          */
    213         ServiceInterface* unbind( const ServiceID& sid );
     203         * TODO
     204         */
     205        void bind(CommunicationListener* listener, const ServiceID& sid);
     206       
     207        /**
     208         * TODO
     209         */
     210        void unbind(CommunicationListener* listener, const ServiceID& sid);
     211       
     212        /**
     213         * TODO
     214         */
     215        void bind(NodeListener* listener);
     216       
     217        /**
     218         * TODO
     219         */
     220        void unbind(NodeListener* listener);
    214221
    215222        /**
     
    221228        const NodeID& getNodeID( const LinkID& lid = LinkID::UNSPECIFIED ) const ;
    222229
    223 protected:
    224 
    225         //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    226         //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    227         //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    228 
    229         void joinSpoVNet(
    230                 const SpoVNetID& id,
    231                 const EndpointDescriptor& bootstrapEp
    232         );
    233 
     230        /**
     231         * TODO
     232         */
     233        void joinSpoVNet( const SpoVNetID& id, const EndpointDescriptor& bootstrapEp );
     234
     235        /**
     236         * TODO
     237         */
    234238        void createSpoVNet(
    235239                const SpoVNetID& id,
     
    239243        );
    240244
    241         void leaveSpoVNet(
    242         );
    243 
    244         //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    245         //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    246         //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    247 
     245        /**
     246         * TODO
     247         */
     248        void leaveSpoVNet();
     249
     250protected:
     251
     252        /**
     253         * TODO
     254         */
    248255        virtual void onLinkUp( const LinkID& id, const NetworkLocator* local, const NetworkLocator* remote );
    249256
     257        /**
     258         * TODO
     259         */
    250260        virtual void onLinkDown( const LinkID& id, const NetworkLocator* local, const NetworkLocator* remote );
    251261
    252262        virtual void onLinkChanged( const LinkID& id, const NetworkLocator* oldlocal, const NetworkLocator* newlocal, const NetworkLocator* oldremote, const NetworkLocator* newremote );
    253263
     264        /**
     265         * TODO
     266         */
    254267        virtual void onLinkFail( const LinkID& id, const NetworkLocator* local, const NetworkLocator* remote );
    255268
     269        /**
     270         * TODO
     271         */
    256272        virtual void onLinkQoSChanged( const LinkID& id, const NetworkLocator* local, const NetworkLocator* remote, const QoSParameterSet& qos );
    257273
     
    260276        //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    261277
     278        /**
     279         * TODO
     280         */
    262281        virtual bool receiveMessage( const Message* message, const LinkID& link, const NodeID& ); // nodeid is not valid in this case!
    263282
     
    270289         */
    271290        virtual void incomingRouteMessage( Message* msg );
     291       
     292        /**
     293         * see OverlayStructureEvents.h, called from specific OverlayInterface class
     294         */
    272295        virtual void onNodeJoin( const NodeID& node );
    273296
    274         // for timer events
     297       
     298        /**
     299         * TODO, for timer events
     300         */
    275301        virtual void eventFunction();
    276302
    277303private:
    278 
    279304        /**
    280305         * The BaseCommunication the BaseOverlay
     
    295320
    296321        /**
    297          * A demultiplexer that maps listeners to service ids
    298          * to deliver upcoming messages to the correct service.
    299          */
    300         Demultiplexer<ServiceInterface*, ServiceID> listenerMux;
     322         * TODO
     323         */
     324        Demultiplexer<CommunicationListener*, ServiceID> communicationListeners;
     325
     326        /**
     327         * TODO
     328         */
     329        typedef vector<NodeListener*> NodeListenerVector;
     330
     331        /**
     332         * TODO
     333         */
     334        NodeListenerVector nodeListeners;
    301335
    302336        /**
     
    322356        } BaseOverlayState;
    323357
     358        /**
     359         * TODO
     360         */
    324361        BaseOverlayState state;
    325362
     
    344381
    345382                LinkItem( const LinkID& _link, const NodeID& _node,
    346                                 const ServiceID& _service, ServiceInterface* _interface )
     383                                const ServiceID& _service, CommunicationListener* _interface )
    347384                        : link( _link ), node( _node ), service( _service ), interface( _interface ),
    348385                                autolink( false ), lastuse( time(NULL) ) {
     
    354391                NodeID node;
    355392                ServiceID service;
    356                 ServiceInterface* interface;
     393                CommunicationListener* interface;
    357394
    358395                // information needed for auto links
     
    370407        LinkMapping linkMapping;
    371408
    372         // nodes with pending joines. TODO: should be cleaned every some seconds
    373         // add timestamps to each, and check on occasion
     409       
     410        /**
     411         * nodes with pending joines. TODO: should be cleaned every
     412         * some seconds, add timestamps to each, and check on occasion
     413         */
    374414        typedef vector<NodeID> JoiningNodes;
    375415        JoiningNodes joiningNodes;
  • source/ariba/overlay/modules/OverlayInterface.h

    r3054 r3055  
    4040#define __OVERLAY_INTERFACE_H
    4141
     42#include "ariba/CommunicationListener.h"
    4243#include "ariba/communication/EndpointDescriptor.h"
    43 #include "ariba/interface/ServiceInterface.h"
    4444#include "ariba/overlay/modules/OverlayStructureEvents.h"
    4545#include "ariba/utility/types/NodeID.h"
    4646#include "ariba/utility/types/ServiceID.h"
    4747
     48using ariba::CommunicationListener;
    4849using ariba::communication::EndpointDescriptor;
    49 using ariba::interface::ServiceInterface;
    5050using ariba::overlay::OverlayStructureEvents;
    5151using ariba::utility::NodeID;
     
    5757class BaseOverlay;
    5858
    59 class OverlayInterface : public ServiceInterface {
     59class OverlayInterface : public CommunicationListener {
    6060public:
    6161        OverlayInterface(
  • source/ariba/overlay/modules/onehop/OneHop.h

    r3054 r3055  
    8585
    8686        //
    87         // see ServiceInterface.h and OverlayInterface.h
     87        // see CommunicationListener.h and OverlayInterface.h
    8888        //
    8989
Note: See TracChangeset for help on using the changeset viewer.