VR-Link API Documentation for DIS
Home
Namespaces
Classes
Files
Examples
Libraries
File List
File Members
include
vl
tMessageInterface.h
Go to the documentation of this file.
1
/*********************************************************************
2
** Copyright (c) 1992-2010 VT MAK
3
** All rights reserved.
4
*********************************************************************/
5
9
10
#ifndef tMessageInterface_H_
11
#define tMessageInterface_H_
12
13
#if DtTENA
14
15
#include "
tExerciseConn.h
"
16
#include <
vlutil/vlMachineTypes.h
>
17
18
class
DtInteraction
;
19
24
class
DT_DLL_VL
DtMessageInterface
25
{
26
public
:
28
DtMessageInterface();
29
31
virtual
~DtMessageInterface();
32
35
virtual
void
send
(
const
DtInteraction
& inter,
DtExerciseConn
& exConn)
const
= 0;
36
40
virtual
void
addCallback(
DtExerciseConn
* conn,
void
* usr) = 0;
41
45
virtual
void
removeCallback(
DtExerciseConn
* conn,
void
* usr) = 0;
46
49
virtual
void
setSendDelayTime(
double
delayTimeInSeconds);
50
52
virtual
double
sendDelayTime()
const
;
53
54
protected
:
55
double
mySendDelayTime;
56
};
57
61
#define DtDEFINE_MSG_CALLBACKINFO(localName) \
62
class localName##MessageCallbackInfo \
63
{ \
64
public: \
65
localName##MessageCallbackInfo(DtExerciseConn* exConn, \
66
localName##Interface* iface) : \
67
myExConn(exConn), \
68
myInterface(iface) { } \
69
\
70
DtExerciseConn* exConn() { return myExConn;} \
71
localName##Interface* interface() { return myInterface;} \
72
protected: \
73
DtExerciseConn* myExConn; \
74
localName##Interface* myInterface; \
75
}; \
76
typedef DCT::Utils::SmartPtr<localName##MessageCallbackInfo> \
77
localName##MessageCallbackInfoPtr;
78
82
#define DtDEFINE_MESSAGE_CALLBACK(localName, omNamespace) \
83
class localName##MessageCallback : \
84
public virtual TENA::Middleware::Callback::Callback \
85
{ \
86
public: \
87
localName##MessageCallback( const omNamespace::Pointer& message, \
88
const localName##MessageCallbackInfoPtr& callbackInfo) : \
89
myCallbackInfo(callbackInfo), \
90
myMessage(message) { } \
91
\
92
virtual ~localName##MessageCallback() {} \
93
\
94
virtual void execute() \
95
{ \
96
localName##Interaction* interaction = \
97
static_cast<localName##Interaction*>(localName##Interaction::create()); \
98
localName##Interface::decode(myMessage, interaction); \
99
myCallbackInfo->exConn()->applyInteractionCallback(interaction->name(), \
100
interaction); \
101
myCallbackInfo->exConn()->incrementNumberOfMessagesProcessed(); \
102
delete interaction; \
103
} \
104
protected: \
105
localName##MessageCallbackInfoPtr myCallbackInfo; \
106
omNamespace::Pointer myMessage; \
107
};
108
112
#define DtDEFINE_MESSAGE_CALLBACK_FACTORY(localName, omNamespace) \
113
class localName##MessageCallbackFactory : \
114
public virtual omNamespace::MessageCallbackFactory \
115
{ \
116
public: \
117
localName##MessageCallbackFactory( \
118
const localName##MessageCallbackInfoPtr& cbInfo) : \
119
myCallbackInfo(cbInfo) { } \
120
\
121
virtual ~localName##MessageCallbackFactory() { } \
122
\
123
virtual std::auto_ptr<TENA::Middleware::Callback::Callback> \
124
create(const omNamespace::Pointer& message) \
125
{ \
126
return std::auto_ptr<TENA::Middleware::Callback::Callback>( \
127
new localName##MessageCallback(message, myCallbackInfo)); \
128
} \
129
protected: \
130
localName##MessageCallbackInfoPtr myCallbackInfo; \
131
};
132
136
#define DtDEFINE_MESSAGE_SUB_INFO(localName, omNamespace) \
137
class localName##SubscriptionInfo : public omNamespace::SubscriptionInfo \
138
{ \
139
public: \
140
localName##SubscriptionInfo(const localName##MessageCallbackInfoPtr& cbInfo): \
141
omNamespace::SubscriptionInfo( \
142
omNamespace::MessageCallbackFactoryPtr( \
143
new localName##MessageCallbackFactory(cbInfo))) { } \
144
\
145
virtual ~localName##SubscriptionInfo() { } \
146
};
147
148
#endif
149
#endif
150
Document ID: Generated on Wed Aug 14 15:35:11 EDT 2013 from SVN revision 130445
Copyright © 2005-2013 VT MÄK. All Rights Reserved (
www.mak.com
)