VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
externalCommModel.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include <map>
14 #include <deque>
15 #include "vrfobjcore/commModel.h"
18 
19 #include <tbb/spin_mutex.h>
20 #include <tbb/atomic.h>
21 
23 
25 {
26 private:
28 
33 
34 protected:
38  virtual bool init();
39 
40 public:
44 
45  virtual ~DtExternalCommModel();
46 
48  virtual DtString type() const;
49 
52  virtual void registerRadio(DtVrfRadio* radio);
53 
58  virtual void sendMessage(DtVrfObjectMessage* message, DtVrfRadio* sendingRadio);
59 
62  virtual void tick();
63 
64 protected:
65  virtual DtU32 nextMessageId(const DtEntityIdentifier& entityId);
66 
68  virtual void passMessageToReceiver(DtVrfObjectMessageConstPtr, const DtEntityIdentifier& receiver);
69 
70  static void messageClearToReceiveCallback(const DtExternalCommsProcessMessageData& data, void* usr);
71  virtual void processMessageClearToReceive(const DtExternalCommsProcessMessageData& data);
72 
73  static void messageTimeoutCallback(const DtExternalCommsTimeoutData& data, void* usr);
74  virtual void processMessageTimeout(const DtExternalCommsTimeoutData& data);
75 
76  static void newMessageCallback(const DtExternalCommsMessageTransporter::DtExternalCommsMessageCallbackParams& params, void* usr);
77  virtual void processNewMessage(const DtExternalCommsMessageTransporter::DtExternalCommsMessageCallbackParams& params);
78 
79  static void readyToSendCallback(const DtExternalCommsReadyToSendData& data, void* usr);
80  virtual void processReadyToSend(const DtExternalCommsReadyToSendData& data);
81 
82 protected:
83 
84 
86  {
88  DtEntityIdentifier myReceiver;
89  };
90 
91  tbb::atomic<unsigned int> myLastMessageId;
92 
93  typedef std::map<DtU32, DtVrfObjectMessageConstPtr> DtRadioMessageMap;
98 
101  typedef std::deque<DtClearToReceiveData> DtClearToReceiveDeque;
103 
105 
108  typedef std::map<DtU32, DtExternalCommsProcessMessageData> DtExternalCommsMessageDataMap;
110 
113  typedef std::map<DtU32, DtExternalCommsTimeoutData> DtExternalCommsTimeoutMap;
115 
116  tbb::spin_mutex mySentMessagesMutex;
117 };
DtExternalCommsMessageDataMap myWaitingForMessageMap
Definition: externalCommModel.h:109
DtCommModel & operator=(const DtCommModel &orig)
Not implemented.
Structure of data passed to the DtRadio constructor.
Definition: commModel.h:27
tbb::spin_mutex mySentMessagesMutex
Definition: externalCommModel.h:116
virtual bool init()
Virtual init() called from the create() method.
std::map< DtU32, DtExternalCommsProcessMessageData > DtExternalCommsMessageDataMap
This holds information for Qualnet clear to receive, if the transporter hasn&#39;t finished collecting al...
Definition: externalCommModel.h:108
Definition: externalCommModel.h:24
Base class for all communication models in VR-Forces. A DtCommModel is the central point for modeling...
Definition: commModel.h:58
std::pair< makVrfEvents::DtExternalCommsMessageParams, DtVrfObjectMessageConstPtr > DtExternalCommsMessageCallbackParams
Definition: externalCommsMessageTransporter.h:89
std::deque< DtClearToReceiveData > DtClearToReceiveDeque
This holds messages that have been cleared for sending by the external comms server. The messages will not be sent until the next tick of the propagator.
Definition: externalCommModel.h:101
DtRadioMessageMap mySentMessages
Contains all the message that have been sent, but are awaiting authorization from the external comms ...
Definition: externalCommModel.h:96
virtual void sendMessage(DtVrfObjectMessage *message, DtVrfRadio *sendingRadio)
Sends the specified message though the comm model. This is the entry point for a message into the net...
DtExternalCommsMessageTransporter * myTransporter
Definition: externalCommModel.h:97
virtual DtString type() const
std::map< DtU32, DtVrfObjectMessageConstPtr > DtRadioMessageMap
Definition: externalCommModel.h:93
static DtCommModel * create(DtCommModelCreationParams &params)
Static creator function that can be registered with factories. Calls the constructor, and init() on the new instance before returning it.
virtual void tick()
Method that is called every simulation tick. Base class implementation does nothing.
Definition: externalCommsMessageTransporter.h:48
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
std::map< DtU32, DtExternalCommsTimeoutData > DtExternalCommsTimeoutMap
This holds information for Qualnet timeout, if the transporter hasn&#39;t finished collecting all message...
Definition: externalCommModel.h:113
Definition: externalCommsMessageTransporter.h:41
DtClearToReceiveDeque myClearToReceiveDeque
Definition: externalCommModel.h:102
Definition: externalCommModel.h:85
The base class for all messages to/from a specific DtVrfObject. Various subclasses of this class will...
Definition: vrfObjectMessage.h:30
const DtExternalCommModelDescriptor * myExternalCommModelDescriptor
Definition: externalCommModel.h:104
DtExternalCommsTimeoutMap myTimedOutMessageMap
Definition: externalCommModel.h:114
virtual void registerRadio(DtVrfRadio *radio)
Adds a new radio to the comm model. A radio must be part of the comm model in order to send or receiv...
DtEntityIdentifier myReceiver
Definition: externalCommModel.h:88
Definition: externalCommsMessageTransporter.h:32
This class manages encoding and decoding of messages to and from an external comms effects server...
Definition: externalCommsMessageTransporter.h:58
DtBoost::shared_ptr< const DtVrfObjectMessage > DtVrfObjectMessageConstPtr
Boost shared pointer to a const DtVrfObjectMessage.
Definition: vrfObjectMessage.h:165
DtExternalCommModelDescriptor.
Definition: externalCommModelDescriptor.h:24
tbb::atomic< unsigned int > myLastMessageId
Definition: externalCommModel.h:91
DtVrfObjectMessageConstPtr myRadioMessage
Definition: externalCommModel.h:87
Base class for any radios on VrfObjects. A DtVrfRadio acts as the interface between an entity and a D...
Definition: vrfRadio.h:41

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)