VR-Vantage 3.1 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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 
61 {
62 
63 public:
64 
75  const DtEntityType& type, DtExerciseConn* conn,
76 #if DtHLA
77  const DtGlobalObjectDesignator& glId = DtGlobalObjectDesignator::nullId(),
78 #endif
79  const DtEntityIdentifier& entId = DtEntityIdentifier::nullId(),
80  DtRwProperties* stateProps = 0, DtRwProperties* paramProps = 0);
81 
91  const DtEntityType& type, DtExerciseConn* conn,
92 #if DtHLA
93  const DtGlobalObjectDesignator& glId = DtGlobalObjectDesignator::nullId(),
94 #endif
95  const DtEntityIdentifier& entId = DtEntityIdentifier::nullId(),
96  const DtRwProperties& stateProps = DtRwProperties::emptyProperties(),
97  const DtRwProperties& paramProps = DtRwProperties::emptyProperties());
98 
100  virtual ~DtVrfEntityPublisher();
101 
110  virtual bool tick(
111 #ifdef DtHLA
112  bool& extAttrPublisherTick
113 #endif
114  );
115 
119  virtual DtExtEntityStateRepository* entityProcessStateRep();
120  virtual DtExtEntityStateRepository* entityStateRep();
121  virtual DtExtEntityStateRepository* ensr();
123 
124 #ifdef DtHLA
125 
126 
127  virtual DtEntPublisherDecoder* decoder();
128 
131  virtual DtEntPublisherEncoder* encoder();
132 #endif
133 
135  virtual void setPublishesDiGuyInfo(bool has);
136 
138  virtual bool publishesDiGuyInfo();
139 
140 #ifdef DtDIS
141 
142 
143  virtual void setSendDiGuyPdus(bool yesNo);
144 
147  virtual bool sendDiGuyPdus() const;
148 
150  virtual void createAndSendDiGuyPdus();
151 #endif
152 
155  {
156  return myPublisher->sr();
157  }
158 
159 #if DtHLA
160  const DtString& name() const
161  {
162  return myPublisher->name();
163  }
164 #endif
165 
167  virtual const DtObjectId& id() const;
168 
170  virtual const DtObjectId& localId() const;
171 
173  virtual const DtGlobalObjectDesignator& globalId() const;
174 
177  virtual void forceUpdate();
178 
180  virtual bool sendVrfObjectData();
181 
183  virtual DtEntityPublisher* entityPublisher();
184 
187  virtual void setSendVrfObjectDataRecord(bool shouldSend);
188 
190  static void setInitializer(DtExtendedAttributesInitializerPtr init);
191 
193  static DtExtendedAttributesInitializerPtr initializer();
194 
195 #if DtHLA
196 
197  static void setObjectClassChooser(DtObjectClassChooserPtr chooser);
198 
200  static DtObjectClassChooserPtr objectClassChooser();
201 #endif
202 
208  static void setVrfDataTimeThreshold(DtTime time);
209  static DtTime vrfDataTimeThreshold();
211 
212 private:
213 
216 
218  DtVrfEntityPublisher& operator=(const DtVrfEntityPublisher&);
219 
220 protected:
221 
227 
229  void initialize(const DtEntityType& type, DtExerciseConn* conn,
230 #if DtHLA
231  const DtGlobalObjectDesignator& glId,
232 #endif
233  const DtEntityIdentifier& entId);
234 
236  virtual bool sendVrfDataUpdate();
237 
241  virtual bool needsVrfObjectDataUpdate();
242 
248  virtual bool sendMessage(const DtSimulationAddress& receiver,
251  virtual bool setContentForNet(DtDataInteraction* dataInter,
252  DtSimInterfaceContent* content) const;
254  virtual void sendMessageInteraction(const DtSimulationAddress& receiver,
255  DtDataInteraction& data);
257 
260  static void dataInteractionCallback(DtDataInteraction* i, void* usr);
261 
264  virtual void processSendVrfObjectDataMessage(DtDataInteraction* interaction);
265 
266 public:
267 
269  virtual void processDataInteraction(DtDataInteraction* i);
270 
271 protected:
272 
273  DtEntityPublisher* myPublisher;
274 
275  // For heartbeating for DtIfVrfObjectData messages
277  static DtTime theVrfDataTimeThreshold;
278  bool myPublishesDIGuyInfo; // true if there is DI-Guy info to be published
279 
280  static bool myDiGuyEncodersSetup;
281 
282 #if DtHLA
284 
286 #endif
287 
289 };


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