VR-Exchange 2.10 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
messageInterface.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2013 MAK Technologies, Inc.
3  * All rights reserved.
4  ****************************************************************************/
5 
9 
10 #if DtTENA
11 
12 #pragma once
13 
14 #include <vlTena/exerciseConn.h>
15 #include <vlutil/vlMachineTypes.h>
16 
17 namespace MAKVrExchange
18 {
19 
20  namespace DtTenaBroker
21  {
22 
23  class DtInteraction;
24 
29  class DT_DLL_VLTENA DtMessageInterface
30  {
31  public:
32 
34  DtMessageInterface();
35 
37  virtual ~DtMessageInterface();
38 
41  virtual void send( const DtInteraction& inter, DtExerciseConn& exConn ) const = 0;
42 
46  virtual void addCallback( DtExerciseConn* conn, void* usr ) = 0;
47 
51  virtual void removeCallback( DtExerciseConn* conn, void* usr ) = 0;
52 
55  virtual void setSendDelayTime( double delayTimeInSeconds );
56 
58  virtual double sendDelayTime() const;
59 
60  protected:
61 
62  double mySendDelayTime;
63 
64  };
65 
66  }
67 }
68 
72 #define DtDEFINE_MSG_CALLBACKINFO(localName) \
73  class localName##MessageCallbackInfo \
74  { \
75  public: \
76  localName##MessageCallbackInfo(DtExerciseConn* exConn, \
77  localName##Interface* iface) : \
78  myExConn(exConn), \
79  myInterface(iface) { } \
80  \
81  DtExerciseConn* exConn() { return myExConn;} \
82  localName##Interface* interface() { return myInterface;} \
83  protected: \
84  DtExerciseConn* myExConn; \
85  localName##Interface* myInterface; \
86  }; \
87  typedef DCT::Utils::SmartPtr<localName##MessageCallbackInfo> \
88  localName##MessageCallbackInfoPtr;
89 
93 #define DtDEFINE_MESSAGE_CALLBACK(localName, omNamespace) \
94  class localName##MessageCallback : \
95 public virtual TENA::Middleware::Callback::Callback \
96 { \
97 public: \
98 localName##MessageCallback( const omNamespace::Pointer& message, \
99  const localName##MessageCallbackInfoPtr& callbackInfo) : \
100  myCallbackInfo(callbackInfo), \
101  myMessage(message) { } \
102  \
103  virtual ~localName##MessageCallback() {} \
104  \
105  virtual void execute() \
106  { \
107  localName##Interaction* interaction = \
108  static_cast<localName##Interaction*>(localName##Interaction::create()); \
109  localName##Interface::decode(myMessage, interaction); \
110  myCallbackInfo->exConn()->applyInteractionCallback(interaction->name(), \
111  interaction); \
112  myCallbackInfo->exConn()->incrementNumberOfMessagesProcessed(); \
113  delete interaction; \
114  } \
115 protected: \
116 localName##MessageCallbackInfoPtr myCallbackInfo; \
117 omNamespace::Pointer myMessage; \
118 };
119 
123 #define DtDEFINE_MESSAGE_CALLBACK_FACTORY(localName, omNamespace) \
124  class localName##MessageCallbackFactory : \
125 public virtual omNamespace::MessageCallbackFactory \
126 { \
127 public: \
128 localName##MessageCallbackFactory( \
129  const localName##MessageCallbackInfoPtr& cbInfo) : \
130  myCallbackInfo(cbInfo) { } \
131  \
132  virtual ~localName##MessageCallbackFactory() { } \
133  \
134  virtual std::auto_ptr<TENA::Middleware::Callback::Callback> \
135  create(const omNamespace::Pointer& message) \
136  { \
137  return std::auto_ptr<TENA::Middleware::Callback::Callback>( \
138  new localName##MessageCallback(message, myCallbackInfo)); \
139  } \
140 protected: \
141 localName##MessageCallbackInfoPtr myCallbackInfo; \
142 };
143 
147 #define DtDEFINE_MESSAGE_SUB_INFO(localName, omNamespace) \
148  class localName##SubscriptionInfo : public omNamespace::SubscriptionInfo \
149  { \
150  public: \
151  localName##SubscriptionInfo(const localName##MessageCallbackInfoPtr& cbInfo)\
152  : omNamespace::SubscriptionInfo( \
153  omNamespace::MessageCallbackFactoryPtr( \
154  new localName##MessageCallbackFactory(cbInfo))) { } \
155  \
156  virtual ~localName##SubscriptionInfo() { } \
157  };
158 
159 #endif // DtTENA
#define DT_DLL_VLTENA
Definition: brokers/tenaBroker/vlTena/dllExport.h:26
Contains the DtExerciseConn class declaration.

Document ID: Generated on Mon May 25 18:45:12 EDT 2026 from SVN revision 289111
Copyright © 2005-2026 MAK Technologies. All Rights Reserved (www.mak.com)