VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
externalCommsMessageTransporter.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2007 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
9 #include <vlutil/vlMachineTypes.h>
10 #include <vlpi/entityIdentifier.h>
15 #include <boost/signals2.hpp>
16 
17 class DtEventManager;
19 
22 const DtUserProtocol DtQualnetSignalUserProtocol = (DtUserProtocol) 10000;
23 const DtUserProtocol DtExtendedContentSignalUserProtocol = (DtUserProtocol) 11060;
24 
25 namespace makVrfEvents
26 {
27  class DtEvent;
28  class DtDataEvent;
29  class DtExternalCommsSignalEvent;
30  struct DtExternalCommsMessageParams;
31 }
32 
34 {
35  DtU32 myMessageId;
36  DtEntityIdentifier mySender;
37  DtEntityIdentifier myReceiver;
39  double myDelay;
40 };
41 
43 {
44  DtU32 myMessageId;
45  DtEntityIdentifier mySender;
47 };
48 
50 {
51  DtEntityIdentifier myEntityId;
52  DtU32 myRadioIndex;
53 };
54 
56 
60 {
61 public:
62 
63  typedef struct _tSplitContentEntry{unsigned nSize; char* pBuffer;} SplitContentEntry;
64  typedef std::map<DtSplitMessageKey, std::map<unsigned, SplitContentEntry> > SplitContentMap;
65 
66 private:
68 
73 
74 protected:
78  virtual bool init();
79 
80 public:
84 
86 
87 public:
90  typedef std::pair<makVrfEvents::DtExternalCommsMessageParams, DtVrfObjectMessageConstPtr> DtExternalCommsMessageCallbackParams;
93 
97 
98  virtual void addProcessMessageCallback(DtProcessMessageCallbackList::DtCallbackFunctionType fcn,
99  void* usr);
100  virtual void removeProcessMessageCallback(DtProcessMessageCallbackList::DtCallbackFunctionType fcn,
101  void* usr);
103 
105  virtual bool processVrfObjectMessageReceived(const makVrfEvents::DtExternalCommsMessageParams& params,
106  const char *pVrfObjectMessageBuffer);
107 
111 
112  virtual void addReadyToSendCallback(DtReadyToSendCallbackList::DtCallbackFunctionType fcn,
113  void* usr);
114  virtual void removeReadyToSendCallback(DtReadyToSendCallbackList::DtCallbackFunctionType fcn,
115  void* usr);
117 
121 
122  virtual void addTimeoutCallback(DtTimeoutCallbackList::DtCallbackFunctionType fcn,
123  void* usr);
124  virtual void removeTimeoutCallback(DtTimeoutCallbackList::DtCallbackFunctionType fcn,
125  void* usr);
127 
129 
130  virtual void addNewMessageCallback(DtNewMessageCallbackList::DtCallbackFunctionType fcn,
131  void* usr);
132  virtual void removeNewMessageCallback(DtNewMessageCallbackList::DtCallbackFunctionType fcn,
133  void* usr);
135 
138  bool enabled() const;
139  virtual void setEnabled(bool bEnabled);
143  virtual bool processSplitContent(const makVrfEvents::DtExternalCommsMessageParams& params,
144  const DtSignalMessageHeader& msgHdr, const char *pContent);
145 
147  virtual void processSplitContentTimeout(const DtSplitMessageKey& key);
148 
151  virtual void sendMessage(const makVrfEvents::DtExternalCommsMessageParams& params, DtVrfObjectMessage* message);
152  virtual bool reassembleVrfObjectMessage(const makVrfEvents::DtExternalCommsMessageParams& params,
153  const DtSignalMessageHeader& msgHdr);
154 
156  virtual void removeSplitContent(const DtSplitMessageKey& key);
157 
158  static void splitContentTimeoutCbk(const DtSplitMessageKey& key, void *pUsr);
159 
160 protected:
161 
162  virtual DtString entityIdToString(const DtEntityIdentifier& id) const;
163 
164  virtual void dataInteractionCallback(const makVrfEvents::DtEvent&);
165 
168  virtual void processDataInteraction(const makVrfEvents::DtDataEvent* interaction);
169 
170  virtual void processExternalCommsProcessMessage(const makVrfEvents::DtDataEvent* processMessageInteraction);
171 
172  virtual void processExternalCommsTimout(const makVrfEvents::DtDataEvent* timeoutInteraction);
173 
174  virtual void processExternalCommsReadyToSend(const makVrfEvents::DtDataEvent* readyToSendInteraction);
175 
176  virtual void signalInteractionCallback(const makVrfEvents::DtEvent&);
177  virtual void processSignalInteraction(const makVrfEvents::DtExternalCommsSignalEvent* inter);
178  virtual void sendInteraction(const makVrfEvents::DtExternalCommsMessageParams& params,
179  const DtSignalMessageHeader& msgHdr, const char* pContent);
180 
182  virtual void sendSignalInteraction(const makVrfEvents::DtExternalCommsSignalEvent& signalInteraction);
183  virtual void clearSplitContent();
184 
185 public:
186 
187 protected:
188  bool myEnabled;
197 
198  boost::signals2::scoped_connection mySignalForDataEventConnection;
199  boost::signals2::scoped_connection mySignalForExternalCommsSignalEventConnection;
200 };
201 
203 {
204  return myEnabled;
205 }
DtCallbackList< const DtExternalCommsTimeoutData & > DtTimeoutCallbackList
Definition: externalCommsMessageTransporter.h:89
DtTimeoutCallbackList myTimeoutCallbackList
Definition: externalCommsMessageTransporter.h:193
Definition: externalCommsSignalEvent.h:24
DtCommunicationManager * myCommunicationManager
Definition: externalCommsMessageTransporter.h:189
DtEntityIdentifier mySender
Definition: externalCommsMessageTransporter.h:36
DtU32 myTransmitterRadioIndex
Definition: externalCommsMessageTransporter.h:46
DtCallbackList< const DtExternalCommsMessageCallbackParams & > DtNewMessageCallbackList
Definition: externalCommsMessageTransporter.h:91
DtCallbackList< const DtExternalCommsReadyToSendData & > DtReadyToSendCallbackList
Definition: externalCommsMessageTransporter.h:92
std::map< DtSplitMessageKey, std::map< unsigned, SplitContentEntry > > SplitContentMap
Definition: externalCommsMessageTransporter.h:64
DtEntityIdentifier myReceiver
Definition: externalCommsMessageTransporter.h:37
DtEntityIdentifier mySender
Definition: externalCommsMessageTransporter.h:45
std::pair< makVrfEvents::DtExternalCommsMessageParams, DtVrfObjectMessageConstPtr > DtExternalCommsMessageCallbackParams
Definition: externalCommsMessageTransporter.h:90
DtEntityIdentifier myEntityId
Definition: externalCommsMessageTransporter.h:51
DtU32 myRadioIndex
Definition: externalCommsMessageTransporter.h:52
bool myEnabled
Definition: externalCommsMessageTransporter.h:188
boost::signals2::scoped_connection mySignalForDataEventConnection
Definition: externalCommsMessageTransporter.h:198
DtU32 myTransmitterRadioIndex
Definition: externalCommsMessageTransporter.h:38
DtU32 myMessageId
Definition: externalCommsMessageTransporter.h:35
DtU32 myMessageId
Definition: externalCommsMessageTransporter.h:44
char * pBuffer
Definition: externalCommsMessageTransporter.h:63
Class: DtSplitMessageKey.
Definition: splitMessageKey.h:23
DtNewMessageCallbackList myNewMessageCallbackList
Definition: externalCommsMessageTransporter.h:191
bool enabled() const
accessor/mutator for enabled state
Definition: externalCommsMessageTransporter.h:202
Definition: externalCommsMessageTransporter.h:49
Definition: event.h:13
SplitContentMap mySplitContentMap
Definition: externalCommsMessageTransporter.h:194
The DtCommunicationManager class is a convenience class that will create both the DtNetworkInterfaceM...
Definition: communicationManager.h:51
boost::signals2::scoped_connection mySignalForExternalCommsSignalEventConnection
Definition: externalCommsMessageTransporter.h:199
DtClock myClock
Definition: externalCommsMessageTransporter.h:196
Definition: externalCommsMessageTransporter.h:42
DtProcessMessageCallbackList myProcessMessageCallbackList
Definition: externalCommsMessageTransporter.h:190
double myDelay
Definition: externalCommsMessageTransporter.h:39
This class helps DtVrfMessageInterface handle big messages. DtSplitContentTimer is a simple class tha...
Definition: splitContentTimer.h:22
DtCallbackList< const DtExternalCommsProcessMessageData & > DtProcessMessageCallbackList
Definition: externalCommsMessageTransporter.h:88
const DtUserProtocol DtQualnetSignalUserProtocol
The User Protocol value used when sending VRF Object Messages though signal interactions by the DtExt...
Definition: externalCommsMessageTransporter.h:22
DtSignalMessageHeader.
Definition: signalMessageHeader.h:47
DtReadyToSendCallbackList myReadyToSendCallbackList
Definition: externalCommsMessageTransporter.h:192
The base class for all messages to/from a specific DtVrfObject. Various subclasses of this class will...
Definition: vrfObjectMessage.h:30
Definition: externalCommsSignalEvent.h:12
Definition: externalCommsMessageTransporter.h:63
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
Definition: externalCommsMessageTransporter.h:33
#define DT_DLL_vrfMsgTransport
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfCommunicationManagerDefines.h:26
This class manages encoding and decoding of messages to and from an external comms effects server...
Definition: externalCommsMessageTransporter.h:59
class DtDataEvent
Definition: dataEvent.h:18
const DtUserProtocol DtExtendedContentSignalUserProtocol
Definition: externalCommsMessageTransporter.h:23
DtSplitContentTimer mySplitContentTimer
Definition: externalCommsMessageTransporter.h:195

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)