VR-Forces 4.1.1 Class Documentation
vrfMsgIf.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 
24 #include "vrfmsgs/msgExec.h"
26 #include <vlutil/vlUtil.h>
27 #include <vl/dataInter.h>
28 
33 class DtExerciseConn;
36 
38 
43 typedef bool (*DtIsValidVrfMessageVersionFcn)(DtU32 version, DtDataInteraction* inter, void* user);
44 
46 {
47 public:
48 
50  DtVrfMessageInterface(DtExerciseConn* exConn,
51  bool useDefaultInterfaceFactory = true);
52 
54  virtual ~DtVrfMessageInterface();
55 
57  virtual bool init();
58 
61  virtual bool createMessageExecutive();
62 
64  virtual void createSplitMessageCollector();
65 
66  virtual DtSplitMessageCollector* splitMessageCollector();
67  virtual const DtSplitMessageCollector* splitMessageCollector() const;
68 
70  virtual bool deliverMessage(const DtSimInterfaceMessage& msg);
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 
78 #if XXX
79 
80  virtual bool createAndDeliverMessage(const DtSimulationAddress& sender,
81  const DtSimulationAddress& recipient,
82  const DtSimInterfaceContent & content);
83 #endif
84 
86  virtual bool getContentFromNet(DtDataInteraction* dataInter,
87  DtSimInterfaceContent*& content) const;
88 
89  virtual bool getContentFromNet(unsigned nBufferSize,
90  int nContentType,
91  const char* pContentBuffer,
92  DtSimInterfaceContent*& content) const;
93 
94  virtual bool setContentForNet(DtDataInteraction* dataInter,
95  DtSimInterfaceContent* content) const;
96 
98  virtual void setSequence(DtU32 num);
99  virtual DtU32 sequence() const;
100 
102  virtual void setSessionId(DtU32 num);
103  virtual DtU32 sessionId() const;
104 
106  virtual void setVrfMessageVersionSupported(DtU32 num);
107  virtual DtU32 vrfMessageVersionSupported() const;
108 
122  virtual bool isMessageVrfVersionSupported(DtDataInteraction*) 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  virtual DtExerciseConn* exerciseConn();
138 
140  virtual void clearExerciseConn();
141 
143  virtual DtInterfaceContentFactory* factory() const;
144  virtual void setFactory(DtInterfaceContentFactory* fact);
145 
147  virtual DtInterfaceMessageExecutive* messageExecutive() const;
148 
151  virtual const DtSimulationAddress& messageAddress() const;
152 
154  virtual void receiveMessage(DtDataInteraction* dataInter);
155 
157  virtual bool sendMessage(const DtSimInterfaceMessage& message);
158 
160  virtual void addMessageCallback(int type, DtMessageCallbackFcn fcn,
161  void* usrData);
162 
163  virtual void removeMessageCallback(int type, DtMessageCallbackFcn fcn,
164  void* usrData);
165 
177  virtual bool sendSplitContent(const char* pContentBuffer,
178  unsigned int nBufferSize,
179  int nContentType,
180  const DtSimulationAddress& sender,
181  const DtSimulationAddress& recipient,
182  DtSplitMessageHandle& msgHandleReturn);
183 
186  virtual bool sendSplitContent(const char* pContentBuffer,
187  unsigned int nBufferSize,
188  int nContentType,
189  const DtSimulationAddress& sender,
190  const DtSimulationAddress& recipient);
191 
192 #ifdef DtHLA
193 
194  virtual bool isQueuedMessage(const DtSimInterfaceMessage& message);
195 
202  virtual void processReceiveMessageQueue();
203 
205  virtual void setQueueMessages(bool);
206  virtual bool queueMessages() const;
207 
208 #endif
209 
211  virtual void processReassembledContent(const char* pContent,
212  int nContentSize,
213  int nContentType,
214  const DtSimulationAddress& messageIdSender,
215  int messageIdNumber,
216  const DtSimulationAddress& recipient);
217 
218 public:
219  static void netMessageCallback(DtDataInteraction* dataInter,
220  void * usr);
221 
224  virtual bool receiveMessage(const DtSimInterfaceContent& content);
225 
226 protected:
227 
229  bool sendNormalMessage(const DtSimInterfaceMessage& message);
230 
239  static bool matchPattern(const DtSimulationAddress& address,
240  const DtSimulationAddress& pattern);
241 
242 #ifdef DtHLA
243 
244  static void postDrainCallback(void* usr);
245 #endif
246 
247 protected:
248 
250 
251  DtVrfMessageInterface& operator=(
252  const DtVrfMessageInterface& orig);
253 
255 
256 protected:
257 
260  DtExerciseConn* myExerciseConnection;
261 
264  DtU32 mySessionId;
265 
267 
272  DtList myCallbacks;
273 
274 #ifdef DtHLA
275 
276 
277 
279 
282 #endif
283 };
284 
286 {
287  return mySequenceNumber;
288 }
289 
291 {
292  DtInfo("Setting SessionId to %d\n", num);
293  mySessionId = num;
294 }
295 
297 {
298  return mySessionId;
299 }
300 
302  int messageType)
303 {
304  if (messageType == DtVrfObjectDataMessageType)
305  {
306  return true;
307  }
308 
309  return false;
310 }
311 
313  int messageType) const
314 {
315  if (messageType == DtVrfObjectDataMessageType)
316  {
317  return true;
318  }
319 
320  return false;
321 }
322 
324 {
326 }
327 
328 inline DtExerciseConn* DtVrfMessageInterface::exerciseConn()
329 {
330  return myExerciseConnection;
331 }
332 
334 {
335  return (mySplitMessageCollector);
336 }
337 
339 {
340  return (mySplitMessageCollector);
341 }
342 
344 {
346 }
347 
349 {
351 }
352 
353 #endif
354 
355 

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)