VR-Link API Documentation for DIS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
objectPublisherDIS.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 *********************************************************************/
5 
9 
10 #if DtDIS
11 
12 
13 #ifndef DtDISObjectPublisher_H_
14 #define DtDISObjectPublisher_H_
15 
16 
18 #include <vlutil/vlMachineTypes.h>
19 #include "objectId.h"
20 #include <vlutil/vlTime.h>
21 
24 class DT_DLL_VL DtPdu;
29 
30 
37 {
38 public:
39 
42  typedef DtAttributePdu * (*DtNonCoupledAttributePduCreator)(const DtPduWithAttributeRecordSets*, void*);
43 
50  DtStateRepository* stateRep,
51  DtStateRepository* asSeenByRemote,
52  bool okToDeleteStateRep = true);
53 
55  virtual ~DtObjectPublisher();
56 
57 private:
58 
61 
63  DtObjectPublisher& operator= (const DtObjectPublisher& orig);
64 
65 public:
66 
69  virtual DtStateRepository* stateRep();
70 
73  virtual DtStateRepository* sr();
74 
76  virtual DtExerciseConn* exerciseConn();
77 
79  virtual const DtObjectId& localId() const = 0;
81  virtual const DtObjectId& id() const = 0;
83  virtual const DtGlobalObjectDesignator& globalId() const = 0;
84 
86  virtual void forceUpdate()=0;
87 
89  virtual void tick() = 0;
90 
92  virtual void parallelTick();
93 
97  virtual void setTimeThreshold(DtTime time);
99  virtual DtTime timeThreshold() const;
100 
103  virtual void setRelLocTimeThreshold( DtTime time );
105  virtual DtTime relLocTimeThreshold() const;
106 
111  virtual DtStateRepository* approximateRemoteStateRep();
112 
115  virtual DtTime lastTimeUpdated() const;
116  virtual DtTime lastTimeAttrUpdated() const;
117 
120  virtual DtTime lastSimTimeUpdated() const;
121 
124  virtual void setUseCustomThreshold(bool useCustom);
125 
128  virtual bool useCustomThreshold();
129 
131  virtual void setAttributePduStrategy(DtAttributePduStrategy strat);
132  virtual DtAttributePduStrategy attributePduStrategy() const;
133 
135  virtual void encodeExtensions(DtStateRepository* stateRep, const DtStateRepository &asSeenByRemote);
136 
139  virtual void decodeExtensions(DtPdu* pdu, const DtStateRepository &stateRep);
140 
141 public:
142 
147  static void setDfltTimeThreshold(DtTime time);
148 
150  static DtTime dfltTimeThreshold();
151 
153  static void setDfltRelLocTimeThreshold( DtTime time );
154 
156  static DtTime dfltRelLocTimeThreshold();
157 
159  static DtNonCoupledAttributePduCreator setDefaultNonCoupledAttributePduCreator(DtNonCoupledAttributePduCreator creator);
160  static DtNonCoupledAttributePduCreator defaultNonCoupledAttributePduCreator(void);
161 
163  DtNonCoupledAttributePduCreator setNonCoupledAttributePduCreator(DtNonCoupledAttributePduCreator creator);
164  DtNonCoupledAttributePduCreator nonCoupledAttributePduCreator(void);
165 
166 protected:
167 
168 
170  virtual void send(DtPdu* pdu) const;
171 
172 
173 protected:
174 
180 
185 
188 
192 
193  // Publisher instance specific override for non-coupled Attribute PDU creation
194  DtNonCoupledAttributePduCreator myNonCoupledAttributePduCreator;
195 
196  // Default non-coupled Attribute PDU creator
197  static DtNonCoupledAttributePduCreator theDefaultNonCoupledAttributePduCreator;
198 
199  // How we should send attribute PDUs
201 
202  //List of State Repository Extension Encoders
203  std::vector<DtStateRepositoryExtensionEncoder*> myStateRepositoryExtensionEncoderList;
204 
205  //List of State Repository Extension Decoders
206  std::vector<DtStateRepositoryExtensionDecoder*> myStateRepositoryExtensionDecoderList;
207 
208 protected:
209 
212 
213 };
214 
216 {
217  return myStateRep;
218 }
219 
221 {
222  return myStateRep;
223 }
224 
226 {
227  return myExConn;
228 }
229 
231 {
232  return myAsSeenByRemote;
233 }
234 
235 #endif //DtObjectPublisher_H_
236 #endif //DtDIS
237 

Document ID: Generated on Mon Jun 22 21:18:40 EDT 2020 from SVN revision 213785
Copyright © 2005-2018 MAK Technologies. All Rights Reserved (www.mak.com)