VR-Vantage 2.8 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
vrfEntityPublisher.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2018 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
9 
10 #pragma once
11 
15 #include <vl/dataInteraction.h>
16 #include <vl/entityPublisher.h>
17 #include <readerWriter/rwProperties.h>
18 
19 #ifdef DtDIS
20 # include <vl/diGuyCustomPduEncoder.h>
21 #endif
22 
23 #ifdef DtDIS
24 typedef DtEntityStateEncoder DtEntPublisherEncoder;
25 typedef DtEntityStateDecoder DtEntPublisherDecoder;
26 #else // DtHLA
29 #endif
30 
32 class DtEntityType;
33 class DtBaseEntityStateRepository;
35 class DtSimulationAddress;
37 
38 namespace makVrfVrlinkExtToolkit
39 {
40  class DtExtendedAttributesObjectPublisher;
41 }
42 
58 {
59 
60 public:
61 
72  const DtEntityType& type, DtExerciseConn* conn,
73 #if DtHLA
74  const DtGlobalObjectDesignator& glId = DtGlobalObjectDesignator::nullId(),
75 #endif
76  const DtEntityIdentifier& entId = DtEntityIdentifier::nullId(),
77  DtRwProperties* stateProps = 0, DtRwProperties* paramProps = 0);
78 
88  const DtEntityType& type, DtExerciseConn* conn,
89 #if DtHLA
90  const DtGlobalObjectDesignator& glId = DtGlobalObjectDesignator::nullId(),
91 #endif
92  const DtEntityIdentifier& entId = DtEntityIdentifier::nullId(),
93  const DtRwProperties& stateProps = DtRwProperties::emptyProperties(),
94  const DtRwProperties& paramProps = DtRwProperties::emptyProperties());
95 
97  virtual ~DtVrfEntityPublisher();
98 
104  virtual void tick();
105 
109  virtual DtExtEntityStateRepository* entityProcessStateRep();
110  virtual DtExtEntityStateRepository* entityStateRep();
111  virtual DtExtEntityStateRepository* ensr();
113 
114 #ifdef DtHLA
115 
116 
117  virtual DtEntPublisherDecoder* decoder();
118 
121  virtual DtEntPublisherEncoder* encoder();
122 #endif
123 
125  virtual void setPublishesDiGuyInfo(bool has);
126 
128  virtual bool publishesDiGuyInfo();
129 
130 #ifdef DtDIS
131 
132 
133  virtual void setSendDiGuyPdus(bool yesNo);
134 
137  virtual bool sendDiGuyPdus() const;
138 
140  virtual void createAndSendDiGuyPdus();
141 #endif
142 
145  {
146  return myPublisher->sr();
147  }
148 
149 #if DtHLA
150  const DtString& name() const
151  {
152  return myPublisher->name();
153  }
154 #endif
155 
157  virtual const DtObjectId& id() const;
158 
160  virtual const DtObjectId& localId() const;
161 
163  virtual const DtGlobalObjectDesignator& globalId() const;
164 
167  virtual void forceUpdate();
168 
170  virtual bool sendVrfObjectData();
171 
173  virtual DtEntityPublisher* entityPublisher();
174 
177  virtual void setSendVrfObjectDataRecord(bool shouldSend);
178 
180  static void setInitializer(DtExtendedAttributesInitializerPtr init);
181 
183  static DtExtendedAttributesInitializerPtr initializer();
184 
185 #if DtHLA
186 
187  static void setObjectClassChooser(DtObjectClassChooserPtr chooser);
188 
190  static DtObjectClassChooserPtr objectClassChooser();
191 #endif
192 
198  static void setVrfDataTimeThreshold(DtTime time);
199  static DtTime vrfDataTimeThreshold();
201 
202 private:
203 
206 
208  DtVrfEntityPublisher& operator=(const DtVrfEntityPublisher&);
209 
210 protected:
211 
217 
219  void initialize(const DtEntityType& type, DtExerciseConn* conn,
220 #if DtHLA
221  const DtGlobalObjectDesignator& glId,
222 #endif
223  const DtEntityIdentifier& entId);
224 
226  virtual bool sendVrfDataUpdate();
227 
231  virtual bool needsVrfObjectDataUpdate();
232 
238  virtual bool sendMessage(const DtSimulationAddress& receiver,
241  virtual bool setContentForNet(DtDataInteraction* dataInter,
242  DtSimInterfaceContent* content) const;
244  virtual void sendMessageInteraction(const DtSimulationAddress& receiver,
245  DtDataInteraction& data);
247 
250  static void dataInteractionCallback(DtDataInteraction* i, void* usr);
251 
254  virtual void processSendVrfObjectDataMessage(DtDataInteraction* interaction);
255 
256 public:
257 
259  virtual void processDataInteraction(DtDataInteraction* i);
260 
261 protected:
262 
263  DtEntityPublisher* myPublisher;
264 
265  // For heartbeating for DtIfVrfObjectData messages
267  static DtTime theVrfDataTimeThreshold;
268  bool myPublishesDIGuyInfo; // true if there is DI-Guy info to be published
269 
270  static bool myDiGuyEncodersSetup;
271 
272 #if DtHLA
274 
276 #endif
277 
279 };


Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)