An Overlay-based
Virtual Network Substrate
SpoVNet

source: sample/pingpong/PingPong.h @ 3037

Last change on this file since 3037 was 3037, checked in by Christoph Mayer, 15 years ago

-jede Menge fixes und Umstellungen
-angefangen ariba/interface los zu werden, erste dateien sind weg

File size: 2.2 KB
Line 
1#ifndef __PINGPONG_H_
2#define __PINGPONG_H_
3
4#include "ariba/ariba.h"
5#include "PingPongMessage.h"
6#include "ariba/utility/system/StartupInterface.h"
7#include "ariba/utility/system/Timer.h"
8
9using namespace ariba;
10using ariba::utility::StartupInterface;
11using ariba::utility::Timer;
12
13namespace ariba {
14namespace application {
15namespace pingpong {
16
17/**
18/* The PingPong main class
19/* This class implements an example service for demonstration purposes
20/* The pingpong class sends and receives messages between two SpoVNet
21/* instances
22**/
23class PingPong :
24        public NodeListener,
25        public CommunicationListener,
26        public StartupInterface,
27        public Timer {
28
29        use_logging_h(PingPong);
30
31public:
32        PingPong();
33        virtual ~PingPong();
34
35protected:
36        // communication listener interface
37        virtual bool onLinkRequest(const NodeID& remote, const DataMessage& msg);
38        virtual void onMessage(const DataMessage& msg, const NodeID& remote, const LinkID& lnk= LinkID::UNSPECIFIED);
39        virtual void onLinkUp(const LinkID& lnk, const NodeID& remote);
40        virtual void onLinkDown(const LinkID& lnk, const NodeID& remote);
41        virtual void onLinkChanged(const LinkID& lnk, const NodeID& remote);
42        virtual void onLinkFail(const LinkID& lnk, const NodeID& remote);
43        virtual void onLinkQoSChanged(const LinkID& lnk, const NodeID& remote, const LinkProperties& prop);
44        virtual void onMessageSent(seqnum_t seq_num, bool failed, const DataMessage& msg = DataMessage::UNSPECIFIED);
45
46        // node listener interface
47        virtual void onJoinCompleted( const SpoVNetID& vid );
48        virtual void onJoinFailed( const SpoVNetID& vid );
49        virtual void onLeaveCompleted( const SpoVNetID& vid );
50        virtual void onLeaveFailed( const SpoVNetID& vid );
51
52        // startup wrapper interface
53        virtual void startup();
54        virtual void shutdown();
55
56        // timer events
57        virtual void eventFunction();
58
59private:
60        // the ariba module and a node
61        AribaModule* ariba;
62        Node* node;
63
64        // flag, whether this node initiates or just joins the spovnet
65        bool isInitiator;
66
67        // the ping pong service id
68        static ServiceID PINGPONG_ID;
69
70        // the current ping id
71        unsigned long pingId;
72
73};
74
75// needed for simulation support
76ARIBA_SIMULATION_SERVICE(PingPong);
77
78}}} // namespace ariba, application, pingpong
79
80#endif // __PINGPONG_H_
Note: See TracBrowser for help on using the repository browser.