VR-Forces 4.6.1 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) 1999-2001 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 /*******************************************************************************
6 ** $RCSfile: vrfMsgIf.h,v $ $Revision: 1.3 $ $State: Exp $
7 *******************************************************************************/
8 
11 
17 
18 #ifndef DtVrfMessageInterface_H_
19 #define DtVrfMessageInterface_H_
20 
21 #include <vlutil/vlMachineTypes.h>
22 #include <vlpi/disEnums.h>
23 
25 #include <vrfmsgs/messageTypes.h>
26 #include <vlutil/vlUtil.h>
27 #include <vl/dataInteraction.h>
28 #include <vl/interClassDesc.h>
29 #include <vl/rtiCompatibility.h>
30 
35 class DtExerciseConn;
38 
40 
45 typedef bool (*DtIsValidVrfMessageVersionFcn)(DtU32 version, DtDataInteraction* inter, void* user);
46 
48 {
49 public:
50 
52  DtVrfMessageInterface(DtExerciseConn* exConn,
53  bool useDefaultInterfaceFactory = true);
54 
56  virtual ~DtVrfMessageInterface();
57 
59  virtual bool init();
60 
63  virtual bool createMessageExecutive();
64 
66  virtual void createSplitMessageCollector();
67 
68  virtual DtSplitMessageCollector* splitMessageCollector();
69  virtual const DtSplitMessageCollector* splitMessageCollector() const;
70 
72  virtual bool deliverMessage(const DtSimInterfaceMessage& msg);
73  virtual bool receiveMessage(const DtSimInterfaceMessage& msg);
74 
75  virtual bool createAndDeliverMessage(
76  const DtSimulationAddress& recipient,
77  const DtSimInterfaceContent & content,
78  bool overrideTimestampOrder = true);
79 
80 #if XXX
81 
82  virtual bool createAndDeliverMessage(const DtSimulationAddress& sender,
83  const DtSimulationAddress& recipient,
84  const DtSimInterfaceContent & content);
85 #endif
86 
88  virtual bool getContentFromNet(DtDataInteraction* dataInter,
89  DtSimInterfaceContent*& content) const;
90 
91  virtual bool getContentFromNet(unsigned nBufferSize,
92  int nContentType,
93  const char* pContentBuffer,
94  DtSimInterfaceContent*& content) const;
95 
96  virtual bool setContentForNet(DtDataInteraction* dataInter,
97  DtSimInterfaceContent* content) const;
98 
100  virtual void setSequence(DtU32 num);
101  virtual DtU32 sequence() const;
102 
104  virtual void setSessionId(DtU32 num);
105  virtual DtU32 sessionId() const;
106 
108  virtual void setVrfMessageVersionSupported(DtU32 num);
109  virtual DtU32 vrfMessageVersionSupported() const;
110 
124  virtual bool isMessageVrfVersionSupported(DtDataInteraction*) const;
125 
127  virtual void addVrfMessageVersionValidCallback(DtIsValidVrfMessageVersionFcn fcn, void* usr);
128  virtual void removeVrfMessageVersionValidCallback(DtIsValidVrfMessageVersionFcn fcn, void* usr);
129 
132  virtual bool isVrfMessageVersionTransparentMessageType(int messageType) const;
133 
136  virtual bool isSessionTransparentMessageType(int messageType);
137 
139  virtual DtExerciseConn* exerciseConn();
140 
142  virtual void clearExerciseConn();
143 
145  virtual DtInterfaceContentFactory* factory() const;
146  virtual void setFactory(DtInterfaceContentFactory* fact);
147 
149  virtual DtInterfaceMessageExecutive* messageExecutive() const;
150 
153  virtual const DtSimulationAddress& messageAddress() const;
154 
156  virtual void receiveMessage(DtDataInteraction* dataInter);
157 
159  virtual bool sendMessage(const DtSimInterfaceMessage& message);
160 
162  virtual void addMessageCallback(int type, DtMessageCallbackFcn fcn,
163  void* usrData);
164 
165  virtual void removeMessageCallback(int type, DtMessageCallbackFcn fcn,
166  void* usrData);
167 
179  virtual bool sendSplitContent(const char* pContentBuffer,
180  unsigned int nBufferSize,
181  int nContentType,
182  const DtSimulationAddress& sender,
183  const DtSimulationAddress& recipient,
184  DtSplitMessageHandle& msgHandleReturn);
185 
188  virtual bool sendSplitContent(const char* pContentBuffer,
189  unsigned int nBufferSize,
190  int nContentType,
191  const DtSimulationAddress& sender,
192  const DtSimulationAddress& recipient);
193 
194 #ifdef DtHLA
195 
196  virtual bool isQueuedMessage(const DtSimInterfaceMessage& message);
197 
204  virtual void processReceiveMessageQueue();
205 
207  virtual void setQueueMessages(bool);
208  virtual bool queueMessages() const;
209 
211  virtual void setTransportTypeReliable(int contentType);
212 
217  virtual void setTransportTypeBestEffort(int contentType);
218 
220  virtual void updateTransportTypeForMsg(const DtSimInterfaceMessage& message);
221 
222 #endif
223 
225  virtual void processReassembledContent(const char* pContent,
226  int nContentSize,
227  int nContentType,
228  const DtSimulationAddress& messageIdSender,
229  int messageIdNumber,
230  const DtSimulationAddress& recipient);
231 
232 public:
233  static void netMessageCallback(DtDataInteraction* dataInter,
234  void * usr);
235 
238  virtual bool receiveMessage(const DtSimInterfaceContent& content);
239 
240 protected:
241 
243  bool sendNormalMessage(const DtSimInterfaceMessage& message);
244 
253  static bool matchPattern(const DtSimulationAddress& address,
254  const DtSimulationAddress& pattern);
255 
256 #ifdef DtHLA
257 
258  static void postDrainCallback(void* usr);
259 
260  static char* dataInteractionChooser(
261  DtExerciseConn* exConn, const DtInteraction& inter);
262 #endif
263 
264 protected:
265 
267 
268  DtVrfMessageInterface& operator=(
269  const DtVrfMessageInterface& orig);
270 
272 
273 protected:
274 
277  DtExerciseConn* myExerciseConnection;
278 
281  DtU32 mySessionId;
282 
284 
289  DtList myCallbacks;
290 
291 #ifdef DtHLA
292 
293 
294 
296 
299 
302 
305 
308 
309 
310 #endif
311 };
312 
314 {
315  return mySequenceNumber;
316 }
317 
319 {
320  DtInfo("Setting SessionId to %d\n", num);
321  mySessionId = num;
322 }
323 
325 {
326  return mySessionId;
327 }
328 
330  int messageType)
331 {
332  if (messageType == DtVrfObjectDataMessageType)
333  {
334  return true;
335  }
336 
337  return false;
338 }
339 
341  int messageType) const
342 {
343  if (messageType == DtVrfObjectDataMessageType)
344  {
345  return true;
346  }
347 
348  return false;
349 }
350 
352 {
354 }
355 
356 inline DtExerciseConn* DtVrfMessageInterface::exerciseConn()
357 {
358  return myExerciseConnection;
359 }
360 
362 {
363  return (mySplitMessageCollector);
364 }
365 
367 {
368  return (mySplitMessageCollector);
369 }
370 
372 {
374 }
375 
377 {
379 }
380 
381 #endif
382 
383 

Document ID: Generated on Wed Jul 25 16:57:45 EDT 2018 from SVN revision 190790
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)