VR-Forces Developer's Guide
 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 
9 #pragma once
10 
13 #include "vrfMsgTransport/events.h"
14 #include <vlutil/vlMachineTypes.h>
15 #include <vlpi/disEnums.h>
17 #include <vrfmsgs/messageTypes.h>
18 #include <vlutil/vlUtil.h>
19 
25 
37 typedef bool (*DtIsValidVrfMessageVersionFcn)(DtU32 version, const makVrfEvents::DtDataEvent* inter, void* user);
38 typedef DtVrfMessageInterface* (*DtVrfMessageInterfaceCreatorFcn)(DtCommunicationManager* exConn, bool useDefaultInterfaceFactory);
39 
41 {
42 public:
44  bool useDefaultInterfaceFactory = true);
45 
47  virtual ~DtVrfMessageInterface();
48 
50  virtual bool init();
51 
54  virtual bool createMessageExecutive();
55 
58  virtual bool deliverMessage(const DtSimInterfaceMessage& msg,
59  bool overrideTimestampOrder = true, bool sendImmediately = false);
60  virtual bool receiveMessage(const DtSimInterfaceMessage& msg);
61 
62  virtual bool createAndDeliverMessage(
63  const DtSimulationAddress& recipient,
64  const DtSimInterfaceContent & content,
65  bool overrideTimestampOrder = true, bool sendImmediately = false);
66 
68  virtual bool getContentFromNet(const makVrfEvents::DtDataEvent* dataInter,
69  DtSimInterfaceContent*& content) const;
70 
71  virtual bool getContentFromNet(unsigned nBufferSize,
72  int nContentType,
73  const char* pContentBuffer,
74  DtSimInterfaceContent*& content) const;
75 
76  virtual bool setContentForNet(makVrfEvents::DtDataEvent* dataInter,
77  DtSimInterfaceContent* content) const;
78 
80  virtual void setSequence(DtU32 num);
81  virtual DtU32 sequence() const;
82 
101  virtual void setSessionId(DtU32 num);
102  virtual DtU32 sessionId() const;
104 
106  virtual void setVrfMessageVersionSupported(DtU32 num);
107  virtual DtU32 vrfMessageVersionSupported() const;
108 
122  virtual bool isMessageVrfVersionSupported(const makVrfEvents::DtDataEvent*) const;
123 
125  virtual void addVrfMessageVersionValidCallback(DtIsValidVrfMessageVersionFcn fcn, void* usr);
126  virtual void removeVrfMessageVersionValidCallback(DtIsValidVrfMessageVersionFcn fcn, void* usr);
127 
130  virtual bool isVrfMessageVersionTransparentMessageType(int messageType) const;
131 
134  virtual bool isSessionTransparentMessageType(int messageType);
135 
137  DtCommunicationManager* communicationManager() const;
138  virtual void setConnectionManager(DtCommunicationManager* cm);
139 
142  virtual void addEvent(const makVrfEvents::DtEvent&);
144 
146  virtual DtInterfaceContentFactory* factory() const;
147  virtual void setFactory(DtInterfaceContentFactory* fact);
148 
150  virtual DtInterfaceMessageExecutive* messageExecutive() const;
151 
154  virtual const DtSimulationAddress& messageAddress() const;
155 
157  virtual bool receiveMessage(const makVrfEvents::DtDataEvent* dataInter);
158 
160  virtual bool sendMessage(const DtSimInterfaceMessage& message,
161  bool overrideTimestampOrder, bool sendImmediately = false);
162 
164  virtual void addMessageCallback(int type, DtMessageCallbackFcn fcn,
165  void* usrData);
166 
167  virtual void removeMessageCallback(int type, DtMessageCallbackFcn fcn,
168  void* usrData);
169 
172  virtual void setCommunicationManager(DtCommunicationManager*);
173 
174 public:
175  virtual void netMessageCallback(const makVrfEvents::DtEvent&);
176 
179  virtual bool receiveMessage(const DtSimInterfaceContent& content);
180 
181 public:
184  static DtVrfMessageInterface* create(DtCommunicationManager* exConn, bool useDefaultInterfaceFactory = true);
186  static DtVrfMessageInterfaceCreatorFcn creator();
188 
189 protected:
190  virtual void removeConnections();
191  virtual void initializeConnections();
192 
194  virtual bool sendNormalMessage(const DtSimInterfaceMessage& message, bool overrideTimestampOrder, bool sendImmediately = false);
195 
204  static bool matchPattern(const DtSimulationAddress& address,
205  const DtSimulationAddress& pattern);
206 
207 private:
208 
210 
211  DtVrfMessageInterface& operator=(
212  const DtVrfMessageInterface& orig);
213 
215 
216 protected:
220 
223  DtU32 mySessionId;
224 
229  DtList myCallbacks;
230 
232 };
233 
235 {
236  return mySequenceNumber;
237 }
238 
240 {
241  DtInfo("Setting SessionId to %d\n", num);
242  mySessionId = num;
243 }
244 
246 {
247  return mySessionId;
248 }
249 
251  int messageType)
252 {
253  if (messageType == DtVrfObjectDataMessageType)
254  {
255  return true;
256  }
257 
258  return false;
259 }
260 
262  int messageType) const
263 {
264  if (messageType == DtVrfObjectDataMessageType)
265  {
266  return true;
267  }
268 
269  return false;
270 }
271 
273 {
274  return myCommunicationManager;
275 }
276 
278 {
280 }
DtVrfMessageInterface *(* DtVrfMessageInterfaceCreatorFcn)(DtCommunicationManager *exConn, bool useDefaultInterfaceFactory)
Definition: vrfMessageInterface.h:38
DtCommunicationManager * communicationManager() const
Get the exercise connection ptr.
Definition: vrfMessageInterface.h:272
const int DtVrfObjectDataMessageType
Definition: messageTypes.h:40
DtSimInterfaceMessage is used to send a message to the front end or the back end. It derives from a s...
Definition: simInterfaceMessage.h:23
bool myCreatedInterfaceFactory
Definition: vrfMessageInterface.h:221
virtual bool isVrfMessageVersionTransparentMessageType(int messageType) const
Returns true if the given message type is message version transparent (i.e. delivered to all message ...
Definition: vrfMessageInterface.h:261
DtList myCallbacks
Definition: vrfMessageInterface.h:229
virtual DtU32 sessionId() const
Definition: vrfMessageInterface.h:245
Definition: interfaceContentFactory.h:32
virtual void setSessionId(DtU32 num)
Definition: vrfMessageInterface.h:239
Definition: event.h:13
The DtCommunicationManager class is a convenience class that will create both the DtNetworkInterfaceM...
Definition: communicationManager.h:51
bool(* DtIsValidVrfMessageVersionFcn)(DtU32 version, const makVrfEvents::DtDataEvent *inter, void *user)
Definition: vrfMessageInterface.h:37
DtCommunicationManager * myCommunicationManager
Definition: vrfMessageInterface.h:219
Contains the DtInterfaceMessageExecutive class declaration.
Definition: interfaceMessageExecutive.h:20
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
virtual DtU32 sequence() const
Definition: vrfMessageInterface.h:234
virtual DtU32 vrfMessageVersionSupported() const
Definition: vrfMessageInterface.h:277
virtual bool isSessionTransparentMessageType(int messageType)
Returns true if the given message type is session transparent (i.e. delivered to all message interfac...
Definition: vrfMessageInterface.h:250
DtU32 mySessionId
Definition: vrfMessageInterface.h:223
Definition: simInterfaceContent.h:45
DtInterfaceMessageExecutive * myMessageExecutive
Definition: vrfMessageInterface.h:218
#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
class DtDataEvent
Definition: dataEvent.h:18
DtU32 myVrfMessageVersionSupported
The vrf version is set (by default) from the values found in version.h. Call setVrfMessageVersionSupp...
Definition: vrfMessageInterface.h:228
static DtVrfMessageInterfaceCreatorFcn theCreatorFcn
Definition: vrfMessageInterface.h:231
DtU32 mySequenceNumber
Definition: vrfMessageInterface.h:222
DtInterfaceContentFactory * myContentFactory
Definition: vrfMessageInterface.h:217
DtCallbackList< DtSimMessage * >::DtCallbackFunctionType DtMessageCallbackFcn
Message callback function signature.
Definition: messageExecutive.h:21
Definition: vrfMessageInterface.h:40

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)