VR-Link API Documentation for HLA 1.3
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)