1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
// IvyCallback.h : Interface for the IvyMessageCallback Class
// : Interface for the IvyDirectMessageCallback Class
// : Interface for the IvyApplicationCallback Class
//
#pragma once
class IvyApplication;
/* Callback for the normal bus Message */
class IvyMessageCallback {
public:
virtual void OnMessage (IvyApplication *app, int argc, const char **argv )=0;
virtual ~IvyMessageCallback()
{
}
};
class IvyMessageCallbackFunction: public IvyMessageCallback {
public:
typedef void ( *IvyMessageCallback_fun )( IvyApplication *app, void *user_data, int argc, const char **argv );
IvyMessageCallback_fun MessageCb;
void *data;
public:
IvyMessageCallbackFunction ( IvyMessageCallback_fun m_cb, void *udata = NULL ) : MessageCb( m_cb )
{
data = udata;
}
~IvyMessageCallbackFunction ()
{
}
void OnMessage (IvyApplication *app, int argc, const char **argv)
{
(*MessageCb) (app, data, argc, argv);
}
/* raccourci d'ecriture */
#define BUS_CALLBACK( m , d ) new IvyMessageCallbackFunction( m, d )
};
/* template Class Callback for the normal bus Message */
template <class T> class IvyMessageCallbackOf : public IvyMessageCallback {
protected:
T* Object;
typedef void ( T::*IvyMessageCallback_fun )( IvyApplication *app, int argc, const char **argv );
IvyMessageCallback_fun MessageCb;
public:
IvyMessageCallbackOf ( T* o, IvyMessageCallback_fun m_cb ) : Object (o), MessageCb( m_cb )
{
}
~IvyMessageCallbackOf ()
{
}
void OnMessage (IvyApplication *app, int argc, const char **argv)
{
(Object->*MessageCb) (app, argc, argv);
}
/* raccourci d'ecriture */
#define BUS_CALLBACK_OF( cl, m ) new IvyMessageCallbackOf<cl>( this, m )
};
/* Callback for the direct Message */
class IvyDirectMessageCallback {
public:
virtual void OnDirectMessage (IvyApplication *app, int id, const char *arg ) = 0;
};
/* Application Callback */
class IvyApplicationCallback {
public:
virtual void OnApplicationConnected (IvyApplication *app) = 0;
virtual void OnApplicationDisconnected (IvyApplication *app) = 0;
virtual ~IvyApplicationCallback()
{
}
};
class IvyApplicationNullCallback : public IvyApplicationCallback {
public:
virtual void OnApplicationConnected (IvyApplication *app)
{};
virtual void OnApplicationDisconnected (IvyApplication *app)
{};
virtual ~IvyApplicationNullCallback()
{
}
};
// Static function CB
class IvyApplicationCallbackFunction: public IvyApplicationCallback {
public:
typedef void ( *IvyApplicationCallback_fun )( IvyApplication *app );
IvyApplicationCallback_fun ApplicationConnectedCb;
IvyApplicationCallback_fun ApplicationDisconnectedCb;
public:
IvyApplicationCallbackFunction ( IvyApplicationCallback_fun con_cb, IvyApplicationCallback_fun disc_cb)
: ApplicationConnectedCb( con_cb ), ApplicationDisconnectedCb( disc_cb )
{
}
~IvyApplicationCallbackFunction ()
{
}
virtual void OnApplicationConnected (IvyApplication *app)
{
(*ApplicationConnectedCb) (app);
};
virtual void OnApplicationDisconnected (IvyApplication *app)
{
(*ApplicationDisconnectedCb) (app);
};
/* raccourci d'ecriture */
#define BUS_APPLICATION_CALLBACK( conn, disconn ) new IvyApplicationCallbackFunction( conn, disconn )
};
/* Callback for the die Message */
class IvyDieCallback {
public:
virtual bool OnDie (IvyApplication *app, int id, const char *arg ) = 0;
virtual ~IvyDieCallback()
{
}
};
|