VR-Forces 4.7 Class 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>
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  virtual void setSendDiGuyPdus(bool yesNo);
133 
135  virtual bool sendDiGuyPdus() const;
136 
138  virtual void createAndSendDiGuyPdus();
139 #endif
140 
143  {
144  return myPublisher->sr();
145  }
146 
147 #if DtHLA
148  const DtString& name() const
149  {
150  return myPublisher->name();
151  }
152 #endif
153 
155  virtual const DtObjectId& id() const;
156 
158  virtual const DtObjectId& localId() const;
159 
161  virtual const DtGlobalObjectDesignator& globalId() const;
162 
165  virtual void forceUpdate();
166 
168  virtual bool sendVrfObjectData();
169 
171  virtual DtEntityPublisher* entityPublisher();
172 
175  virtual void setSendVrfObjectDataRecord(bool shouldSend);
176 
178  static void setInitializer(DtExtendedAttributesInitializerPtr init);
179 
181  static DtExtendedAttributesInitializerPtr initializer();
182 
183 #if DtHLA
184 
185  static void setObjectClassChooser(DtObjectClassChooserPtr chooser);
186 
188  static DtObjectClassChooserPtr objectClassChooser();
189 #endif
190 
196  static void setVrfDataTimeThreshold(DtTime time);
197  static DtTime vrfDataTimeThreshold();
199 
200 private:
201 
204 
206  DtVrfEntityPublisher& operator=(const DtVrfEntityPublisher&);
207 
208 protected:
209 
215 
217  void initialize(const DtEntityType& type, DtExerciseConn* conn,
218 #if DtHLA
219  const DtGlobalObjectDesignator& glId,
220 #endif
221  const DtEntityIdentifier& entId);
222 
224  virtual bool sendVrfDataUpdate();
225 
229  virtual bool needsVrfObjectDataUpdate();
230 
236  virtual bool sendMessage(const DtSimulationAddress& receiver,
237  DtSimInterfaceContent* message);
239  virtual bool setContentForNet(DtDataInteraction* dataInter,
240  DtSimInterfaceContent* content) const;
242  virtual void sendMessageInteraction(const DtSimulationAddress& receiver,
243  DtDataInteraction& data);
245 
248  static void dataInteractionCallback(DtDataInteraction* i, void* usr);
249 
252  virtual void processSendVrfObjectDataMessage(DtDataInteraction* interaction);
253 
254 public:
255 
257  virtual void processDataInteraction(DtDataInteraction* i);
258 
259 protected:
260 
261  DtEntityPublisher* myPublisher;
262 
263  // For heartbeating for DtIfVrfObjectData messages
266  bool myPublishesDIGuyInfo; // true if there is DI-Guy info to be published
267 
268  static bool myDiGuyEncodersSetup;
269 
270 #if DtHLA
272 
274 #endif
275 
277 };

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)