00001 #ifndef __PINGPONG_H_
00002 #define __PINGPONG_H_
00003
00004 #include "ariba/ariba.h"
00005 #include "PingPongMessage.h"
00006 #include "ariba/utility/system/StartupInterface.h"
00007 #include "ariba/utility/system/Timer.h"
00008
00009 using namespace ariba;
00010 using ariba::utility::StartupInterface;
00011 using ariba::utility::Timer;
00012
00013 namespace ariba {
00014 namespace application {
00015 namespace pingpong {
00016
00023 class PingPong :
00024 public NodeListener,
00025 public CommunicationListener,
00026 public StartupInterface,
00027 public Timer {
00028
00029 use_logging_h(PingPong);
00030
00031 public:
00032 PingPong();
00033 virtual ~PingPong();
00034
00035 protected:
00036
00037 virtual bool onLinkRequest(const NodeID& remote, const DataMessage& msg = DataMessage::UNSPECIFIED);
00038 virtual void onMessage(const DataMessage& msg, const NodeID& remote, const LinkID& lnk= LinkID::UNSPECIFIED);
00039 virtual void onLinkUp(const LinkID& lnk, const NodeID& remote);
00040 virtual void onLinkDown(const LinkID& lnk, const NodeID& remote);
00041 virtual void onLinkChanged(const LinkID& lnk, const NodeID& remote);
00042 virtual void onLinkFail(const LinkID& lnk, const NodeID& remote);
00043
00044
00045 virtual void onJoinCompleted( const SpoVNetID& vid );
00046 virtual void onJoinFailed( const SpoVNetID& vid );
00047 virtual void onLeaveCompleted( const SpoVNetID& vid );
00048 virtual void onLeaveFailed( const SpoVNetID& vid );
00049
00050
00051 virtual void startup();
00052 virtual void shutdown();
00053
00054
00055 virtual void eventFunction();
00056
00057 private:
00058
00059 AribaModule* ariba;
00060 Node* node;
00061
00062
00063 bool isInitiator;
00064
00065
00066 static ServiceID PINGPONG_SERVICEID;
00067
00068
00069 unsigned long pingId;
00070
00071 };
00072
00073
00074 ARIBA_SIMULATION_SERVICE(PingPong);
00075
00076 }}}
00077
00078 #endif // __PINGPONG_H_