VR-Forces 4.3.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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 
223  virtual void updateTransportType(
224 #ifdef DtHLA_1516
225  RTI::TransportationType
226 #else
227  RTI::TransportationHandle
228 #endif
229  transportType);
230 
231 #endif
232 
234  virtual void processReassembledContent(const char* pContent,
235  int nContentSize,
236  int nContentType,
237  const DtSimulationAddress& messageIdSender,
238  int messageIdNumber,
239  const DtSimulationAddress& recipient);
240 
241 public:
242  static void netMessageCallback(DtDataInteraction* dataInter,
243  void * usr);
244 
247  virtual bool receiveMessage(const DtSimInterfaceContent& content);
248 
249 protected:
250 
252  bool sendNormalMessage(const DtSimInterfaceMessage& message);
253 
262  static bool matchPattern(const DtSimulationAddress& address,
263  const DtSimulationAddress& pattern);
264 
265 #ifdef DtHLA
266 
267  static void postDrainCallback(void* usr);
268 #endif
269 
270 protected:
271 
273 
274  DtVrfMessageInterface& operator=(
275  const DtVrfMessageInterface& orig);
276 
278 
279 protected:
280 
283  DtExerciseConn* myExerciseConnection;
284 
287  DtU32 mySessionId;
288 
290 
295  DtList myCallbacks;
296 
297 #ifdef DtHLA
298 
299 
300 
302 
305 
308 #if DtHLA_1516
309  RTI::TransportationType
310 #else
311  RTI::TransportationHandle
312 #endif
314 
317 #if DtHLA_1516
318  RTI::TransportationType
319 #else
320  RTI::TransportationHandle
321 #endif
323 
325 #if DtHLA_1516
326  RTI::TransportationType
327 #else
328  RTI::TransportationHandle
329 #endif
331 
333  RTI::InteractionClassHandle myDataInterClassHdl;
334 
337 
338 #endif
339 };
340 
342 {
343  return mySequenceNumber;
344 }
345 
347 {
348  DtInfo("Setting SessionId to %d\n", num);
349  mySessionId = num;
350 }
351 
353 {
354  return mySessionId;
355 }
356 
358  int messageType)
359 {
360  if (messageType == DtVrfObjectDataMessageType)
361  {
362  return true;
363  }
364 
365  return false;
366 }
367 
369  int messageType) const
370 {
371  if (messageType == DtVrfObjectDataMessageType)
372  {
373  return true;
374  }
375 
376  return false;
377 }
378 
380 {
382 }
383 
384 inline DtExerciseConn* DtVrfMessageInterface::exerciseConn()
385 {
386  return myExerciseConnection;
387 }
388 
390 {
391  return (mySplitMessageCollector);
392 }
393 
395 {
396  return (mySplitMessageCollector);
397 }
398 
400 {
402 }
403 
405 {
407 }
408 
409 #endif
410 
411 

Document ID: Generated on Wed Jul 29 00:55:00 EDT 2015 from SVN revision 155257
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)