00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #ifndef __OVERLAY_INTERFACE_H
00040 #define __OVERLAY_INTERFACE_H
00041
00042 #include "ariba/CommunicationListener.h"
00043 #include "ariba/communication/EndpointDescriptor.h"
00044 #include "ariba/overlay/modules/OverlayStructureEvents.h"
00045 #include "ariba/utility/types/NodeID.h"
00046 #include "ariba/utility/types/ServiceID.h"
00047 #include "ariba/utility/types/OverlayParameterSet.h"
00048
00049 using ariba::CommunicationListener;
00050 using ariba::communication::EndpointDescriptor;
00051 using ariba::overlay::OverlayStructureEvents;
00052 using ariba::utility::NodeID;
00053 using ariba::utility::ServiceID;
00054 using ariba::utility::OverlayParameterSet;
00055
00056 namespace ariba {
00057 namespace overlay {
00058
00059 class BaseOverlay;
00060
00064 class OverlayInterface: public CommunicationListener {
00065 friend class BaseOverlay;
00066
00067 public:
00071 typedef vector<NodeID> NodeList;
00072
00076 OverlayInterface(
00077 BaseOverlay& _baseoverlay,
00078 const NodeID& _nodeid,
00079 OverlayStructureEvents* _eventsReceiver,
00080 OverlayParameterSet _parameters
00081 );
00082
00086 virtual ~OverlayInterface();
00087
00091 virtual void createOverlay() = 0;
00092
00096 virtual void deleteOverlay() = 0;
00097
00105 virtual void joinOverlay(const EndpointDescriptor& bootstrap =
00106 EndpointDescriptor::UNSPECIFIED ) = 0;
00107
00111 virtual void leaveOverlay() = 0;
00112
00119 virtual const EndpointDescriptor& resolveNode(const NodeID& node) = 0;
00120
00127 virtual void routeMessage(const NodeID& destnode, Message* msg) = 0;
00128
00139 virtual NodeList getKnownNodes() const = 0;
00140
00141
00142
00144 virtual void onLinkUp(const LinkID& lnk, const NodeID& remote);
00146 virtual void onLinkDown(const LinkID& lnk, const NodeID& remote);
00148 virtual void onLinkChanged(const LinkID& lnk, const NodeID& remote);
00150 virtual void onLinkFail(const LinkID& lnk, const NodeID& remote);
00152 virtual void onLinkQoSChanged(const LinkID& lnk, const NodeID& remote,
00153 const LinkProperties& prop);
00155 virtual bool onLinkRequest(const NodeID& remote, const DataMessage& msg);
00157 virtual void onMessage(const DataMessage& msg, const NodeID& remote,
00158 const LinkID& lnk = LinkID::UNSPECIFIED);
00159
00160
00161 const OverlayParameterSet& getParameters() const;
00162
00163 protected:
00164
00166 BaseOverlay& baseoverlay;
00167
00169 OverlayParameterSet parameters;
00170
00172 const NodeID& nodeid;
00173
00175 OverlayStructureEvents* eventsReceiver;
00176
00178 static ServiceID OVERLAY_SERVICE_ID;
00179 };
00180
00181 }}
00182
00183 #endif // __OVERLAY_INTERFACE_H