VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfMessageInterface.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2019 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
14 
15 #pragma once
16 
18 #include "vrfMsgTransport/events.h"
19 #include <vlutil/vlMachineTypes.h>
20 #include <vlpi/disEnums.h>
21 
24 #include <vrfmsgs/messageTypes.h>
25 #include <vlutil/vlUtil.h>
26 #include <vl/dataInteraction.h>
27 #include <vl/interClassDesc.h>
28 #include <vl/rtiCompatibility.h>
29 
36 class DtExerciseConn;
37 
44 typedef bool (*DtIsValidVrfMessageVersionFcn)(DtU32 version, DtDataInteraction* inter, void* user);
45 
47 {
48 public:
50  bool useDefaultInterfaceFactory = true);
51 
53  virtual ~DtVrfMessageInterface();
54 
56  virtual bool init();
57 
60  virtual bool createMessageExecutive();
61 
63  virtual void createSplitMessageCollector();
64 
65  virtual DtSplitMessageCollector* splitMessageCollector();
66  virtual const DtSplitMessageCollector* splitMessageCollector() const;
67 
69  virtual bool deliverMessage(const DtSimInterfaceMessage& msg,
70  bool overrideTimestampOrder = true);
71  virtual bool receiveMessage(const DtSimInterfaceMessage& msg);
72 
73  virtual bool createAndDeliverMessage(
74  const DtSimulationAddress& recipient,
75  const DtSimInterfaceContent & content,
76  bool overrideTimestampOrder = true);
77 
79  virtual bool getContentFromNet(DtDataInteraction* dataInter,
80  DtSimInterfaceContent*& content) const;
81 
82  virtual bool getContentFromNet(unsigned nBufferSize,
83  int nContentType,
84  const char* pContentBuffer,
85  DtSimInterfaceContent*& content) const;
86 
87  virtual bool setContentForNet(DtDataInteraction* dataInter,
88  DtSimInterfaceContent* content) const;
89 
91  virtual void setSequence(DtU32 num);
92  virtual DtU32 sequence() const;
93 
95  virtual void setSessionId(DtU32 num);
96  virtual DtU32 sessionId() const;
97 
99  virtual void setVrfMessageVersionSupported(DtU32 num);
100  virtual DtU32 vrfMessageVersionSupported() const;
101 
115  virtual bool isMessageVrfVersionSupported(DtDataInteraction*) const;
116 
118  virtual void addVrfMessageVersionValidCallback(DtIsValidVrfMessageVersionFcn fcn, void* usr);
119  virtual void removeVrfMessageVersionValidCallback(DtIsValidVrfMessageVersionFcn fcn, void* usr);
120 
123  virtual bool isVrfMessageVersionTransparentMessageType(int messageType) const;
124 
127  virtual bool isSessionTransparentMessageType(int messageType);
128 
130  DtEventManager* eventManager();
131 
134  virtual void addEvent(const DtEvent&);
135 
137  virtual void addEvent(const DtDetonationInteraction&);
138  virtual void addEvent(const DtFireInteraction&);
139  virtual void addEvent(const DtAcknowledgeInteraction&);
140  virtual void addEvent(const DtStopFreezeInteraction&);
141  virtual void addEvent(const DtStartResumeInteraction&);
142  virtual void addEvent(const DtDataInteraction&);
143  virtual void addEvent(const DtSignalInteraction&);
144  virtual void addEvent(const DtCommentInteraction&);
145  virtual void addEvent(const DtSensorFieldOfViewControlInter&);
146  virtual void addevent(const DtSimInterfaceContent&);
147 
148 #if DtHLA
149  virtual void addEvent(const DtDataInteractionWithTransportType&);
150  virtual void addEvent(const DtInfluenceInteraction&);
151  virtual void addEvent(const DtEndGestureInter&);
152  virtual void addEvent(const DtExecuteGestureInter&);
153 #else
154  virtual void addEvent(const DtDIGuyCustomPdu&);
155 #endif
156 
159  virtual void clearEventManager();
160 
162  virtual DtInterfaceContentFactory* factory() const;
163  virtual void setFactory(DtInterfaceContentFactory* fact);
164 
166  virtual DtInterfaceMessageExecutive* messageExecutive() const;
167 
170  virtual const DtSimulationAddress& messageAddress() const;
171 
173  virtual void receiveMessage(DtDataInteraction* dataInter);
174 
176  virtual bool sendMessage(const DtSimInterfaceMessage& message,
177  bool overrideTimestampOrder);
178 
180  virtual void addMessageCallback(int type, DtMessageCallbackFcn fcn,
181  void* usrData);
182 
183  virtual void removeMessageCallback(int type, DtMessageCallbackFcn fcn,
184  void* usrData);
185 
197  virtual bool sendSplitContent(const char* pContentBuffer,
198  unsigned int nBufferSize,
199  int nContentType,
200  const DtSimulationAddress& sender,
201  const DtSimulationAddress& recipient,
202  DtSplitMessageHandle& msgHandleReturn,
203  bool overrideTimestampOrder);
204 
207  virtual bool sendSplitContent(const char* pContentBuffer,
208  unsigned int nBufferSize,
209  int nContentType,
210  const DtSimulationAddress& sender,
211  const DtSimulationAddress& recipient,
212  bool overrideTimestampOrder);
213 
215  virtual void processReassembledContent(const char* pContent,
216  int nContentSize,
217  int nContentType,
218  const DtSimulationAddress& messageIdSender,
219  int messageIdNumber,
220  const DtSimulationAddress& recipient);
221 
224  virtual void setEventManager(DtEventManager*);
225 
226 public:
227  virtual void netMessageCallback(const DtEvent&);
228  virtual void simInterfaceContentMessageEvent(const DtEvent& c);
229 
232  virtual bool receiveMessage(const DtSimInterfaceContent& content);
233 
235  virtual DtExerciseConn* exerciseConnection() const;
236 
237 protected:
238  virtual void removeConnections();
239  virtual void initializeConnections();
240 
242  bool sendNormalMessage(const DtSimInterfaceMessage& message, bool overrideTimestampOrder);
243 
252  static bool matchPattern(const DtSimulationAddress& address,
253  const DtSimulationAddress& pattern);
254 
255 private:
256 
258 
259  DtVrfMessageInterface& operator=(
260  const DtVrfMessageInterface& orig);
261 
263 
264 protected:
265 
270 
273  DtU32 mySessionId;
274 
276 
281  DtList myCallbacks;
282 };
283 
285 {
286  return mySequenceNumber;
287 }
288 
290 {
291  DtInfo("Setting SessionId to %d\n", num);
292  mySessionId = num;
293 }
294 
296 {
297  return mySessionId;
298 }
299 
301  int messageType)
302 {
303  if (messageType == DtVrfObjectDataMessageType)
304  {
305  return true;
306  }
307 
308  return false;
309 }
310 
312  int messageType) const
313 {
314  if (messageType == DtVrfObjectDataMessageType)
315  {
316  return true;
317  }
318 
319  return false;
320 }
321 
323 {
324  if (myOwnsEventManager)
325  {
326  delete myEventManager;
327  }
328 
329  myEventManager = 0;
330 }
331 
333 {
334  return myEventManager;
335 }
336 
338 {
339  return (mySplitMessageCollector);
340 }
341 
343 {
344  return (mySplitMessageCollector);
345 }
346 
348 {
350 }
351 
353 {
355 }
Definition: events.h:33
virtual DtSplitMessageCollector * splitMessageCollector()
Definition: vrfMessageInterface.h:337
Instances of DtEndGestureInter are used to store state data for DIGuyInteraction.EndGesture interacti...
Definition: endGestureInterHLA.h:27
DtEventManager * eventManager()
Get the exercise connection ptr.
Definition: vrfMessageInterface.h:332
DtEventManager * myEventManager
Definition: vrfMessageInterface.h:268
bool myOwnsEventManager
Definition: vrfMessageInterface.h:269
const int DtVrfObjectDataMessageType
Definition: messageTypes.h:40
virtual void clearEventManager()
Definition: vrfMessageInterface.h:322
DtSimInterfaceMessage is used to send a message to the front end or the back end. ...
Definition: simInterfaceMessage.h:32
bool myCreatedInterfaceFactory
Definition: vrfMessageInterface.h:271
virtual bool isVrfMessageVersionTransparentMessageType(int messageType) const
Returns true if the given message type is message version transparent (i.e.
Definition: vrfMessageInterface.h:311
DtSplitMessageCollector * mySplitMessageCollector
Definition: vrfMessageInterface.h:275
DtList myCallbacks
Definition: vrfMessageInterface.h:281
Definition: events.h:47
This class helps DtVrfMessageInterface handle big messages.
Definition: splitMessageCollector.h:30
virtual DtU32 sessionId() const
Definition: vrfMessageInterface.h:295
Definition: interfaceContentFactory.h:32
virtual void setSessionId(DtU32 num)
Get/Set the session id.
Definition: vrfMessageInterface.h:289
Definition: eventManager.h:23
virtual void setVrfMessageVersionSupported(DtU32 num)
Get/Set the vrf message version.
Definition: vrfMessageInterface.h:347
DtDetonationPdu DtDetonationInteraction
Definition: DistributedSimulationDriver3A.h:14
Contains the DtInterfaceMessageExecutive class declaration.
Definition: interfaceMessageExecutive.h:22
bool(* DtIsValidVrfMessageVersionFcn)(DtU32 version, DtDataInteraction *inter, void *user)
When using the callback, note that if the version is 0 it means that a version record was not found i...
Definition: vrfMessageInterface.h:44
void(* DtMessageCallbackFcn)(DtSimMessage *msg, void *usr)
Message callback function signature.
Definition: messageExecutive.h:21
Instances of DtSensorFieldOfViewControlInter are used to store state data for SensorFieldOfViewContro...
Definition: sensorFieldOfViewControlInterDIS.h:51
Instances of DtExecuteGestureInter are used to store state data for DIGuyInteraction.ExecuteGesture interactions.
Definition: executeGestureInterHLA.h:27
Instances of DtInfluenceInter are used to store state data for Influence interactions.
Definition: influenceInteractionHLA.h:27
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
virtual DtU32 sequence() const
Definition: vrfMessageInterface.h:284
virtual DtU32 vrfMessageVersionSupported() const
Definition: vrfMessageInterface.h:352
virtual bool isSessionTransparentMessageType(int messageType)
Returns true if the given message type is session transparent (i.e.
Definition: vrfMessageInterface.h:300
#define DT_DLL_vrfMsgTransport
This file is used to determine how to build.
Definition: vrfMsgTransportDefines.h:28
DtU32 mySessionId
Definition: vrfMessageInterface.h:273
A DtSplitMessageHandle.
Definition: splitMessageHandle.h:52
Definition: simInterfaceContent.h:45
DtInterfaceMessageExecutive * myMessageExecutive
Definition: vrfMessageInterface.h:267
DtU32 myVrfMessageVersionSupported
The vrf version is set (by default) from the values found in version.h.
Definition: vrfMessageInterface.h:280
DtU32 mySequenceNumber
Definition: vrfMessageInterface.h:272
DtInterfaceContentFactory * myContentFactory
Definition: vrfMessageInterface.h:266
Definition: vrfMessageInterface.h:46

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)