VR-Link API Documentation for HLA 1.3
objClassDesc1516.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 *********************************************************************/
5 
6 
9 
10 #pragma once
11 
12 #if DtHLA_1516
13 
14 
15 #include <vlutil/vlMachineTypes.h>
16 #include <vlutil/vlString.h>
17 #include "hlaStateEncoder.h"
18 #include "hlaStateDecoder.h"
19 #include "rtiNamespace.h"
20 #include "region.h"
21 #include "userTagModifiers.h"
22 #include <map>
23 #include <list>
24 
25 class DtExerciseConn;
27 class DtVrlRtiAmbassador;
28 
42 {
43 public:
44 
47  DtObjClassDesc(const char* className,
48  DtObjClassDesc* base,
49  RTI::ObjectClassHandle handle,
50  DtExerciseConn* exConn);
51 
53  virtual ~DtObjClassDesc();
54 
56  virtual void addAttr(const char* attrName, bool withSpace = false);
57 
59  virtual RTI::ObjectClassHandle handle() const;
60 
62  virtual RTI::AttributeHandle attributeHandleByName(const char *attrName) const;
63 
65  virtual DtString attributeNameByHandle(const RTI::AttributeHandle& hand) const;
66 
68  virtual const char* name() const;
69 
71  virtual const DtObjClassDesc* baseClass() const;
72 
74  virtual DtObjClassDesc* baseClass();
75 
77  virtual void addChildClass(DtObjClassDesc* child);
78 
81  virtual int isOfClass(RTI::ObjectClassHandle hand) const;
82 
85  virtual int numAttributes() const;
86 
88  virtual bool hasAttribute(const char* attrName) const;
89 
92  virtual const RTI::AttributeHandleSet& attrHandleSet() const;
93 
95  virtual const RTI::AttributeHandleSet& ownAttrHandles() const;
96 
103  virtual bool classNeededByFederation();
104 
109  virtual void publish();
110  virtual void publish(const RTI::AttributeHandleSet& hSet);
111 
113  virtual void unpublish();
114 
119 
121  virtual void subscribe(std::wstring const& updateRateDesignator = L"", bool active = true );
122  virtual void subscribe(const DtDDMRegionSet& region,
123  std::wstring const& updateRateDesignator = L"", bool active = true );
124  virtual void subscribe(const RTI::AttributeHandleSet& hSet,
125  std::wstring const& updateRateDesignator = L"",
126  bool active = true );
128  virtual void subscribe(const RTI::AttributeHandleSet& hSet, DtDDMRegionSP region,
129  std::wstring const& updateRateDesignator = L"", bool active = true);
130 
131 
132  virtual void passiveSubscribe();
133 
135  virtual void unsubscribe();
136  virtual void unsubscribe(const DtDDMRegionSet& regionSet);
137 
140  virtual void requestUpdates();
141  virtual void requestUpdates(const DtDDMRegionSet& region);
142  virtual void requestUpdates(const RTI::AttributeHandleSet& hSet);
143  virtual void requestUpdates(const RTI::AttributeHandleSet& hSet,
144  DtDDMRegionSP region);
145 
149  virtual const RTI::AttributeHandleSet& publishedAttrs() const;
150 
153  virtual bool everPublished() const;
154 
158  virtual const RTI::AttributeHandleSet& subscribedAttrs() const;
159 
160  virtual const RTI::AttributeHandleSet& attributesWithSpace() const;
161  virtual const RTI::AttributeHandleSet& attributesWithoutSpace() const;
162 
163  virtual const RTI::AttributeHandleSet& subscribedAttrsWithSpace() const;
164  virtual const RTI::AttributeHandleSet& subscribedAttrsWithoutSpace() const;
165 
168  virtual DtObjClassDesc* firstSubscribed();
169 
172  virtual bool everSubscribed() const;
173 
175  virtual DtVrlRtiAmbassador* rtiAmb();
176 
178  virtual DtVrlFederateAmbassador* fedAmb();
179 
181  virtual RTI::AttributeHandle privilegeHandle() const;
182 
183  virtual void setUserTagModifier(DtObjectTagModifierSP modifier);
184  virtual DtObjectTagModifierSP userTagModifier();
185 
186 
193  virtual void setSubscribeToUnspecifiedAttributesFlag(bool subscribe);
194  virtual bool subscribeToUnspecifiedAttributesFlag();
195 
201  virtual void setUnknownAttributeEncoder(
203 
206  virtual void setUnknownAttributeDecoder(
208 
210  virtual DtHlaStateEncoder::DtAttributeEncoder unknownAttributeEncoder();
211 
213  virtual DtHlaStateDecoder::DtAttributeDecoder unknownAttributeDecoder();
214 
215 
216 public:
222  static void setSubscriptionTimeDelay(double delay);
223 
224 protected:
225 
227  static void startRegCb(RTI::ObjectClassHandle h,
228  void* usr);
229 
231  static void stopRegCb(RTI::ObjectClassHandle h,
232  void* usr);
233 
234  static void ddmDisabled();
235 
236 protected:
237 
239  virtual void processStartReg(RTI::ObjectClassHandle h);
240 
242  virtual void processStopReg(RTI::ObjectClassHandle h);
243 
245  virtual DtObjClassDesc* self() const;
246 
249  virtual void synchSubscribedAttributes();
250 
253  virtual void fillInAttributeHandleSetRegionHandleSetPairVector(
254  const RTI::AttributeHandleSet& hSet, DtDDMRegionSP region,
255  RTI::AttributeHandleSetRegionHandleSetPairVector& pairVector);
256 
258  virtual void addAttr(const char* attrName, RTI::AttributeHandle attrHandle,
259  RTI::DimensionHandleSet& dimSet, bool isPrivilegeToDelete, bool withSpace = false);
260 
261 
262 protected:
263  DtString myName;
264  RTI::ObjectClassHandle myHandle;
265  RTI::AttributeHandleSet* myAttrs;
266  RTI::AttributeHandleSet* myOwnAttrs;
267  RTI::AttributeHandleSet* mySubAttrs;
268  RTI::AttributeHandleSet* myPubAttrs;
269 
271  RTI::AttributeHandleSet* myAttrsWithSpace;
272 
274  RTI::AttributeHandleSet* myAttrsWithoutSpace;
275 
276  RTI::AttributeHandleSet* mySubAttrsWithSpace;
277  RTI::AttributeHandleSet* mySubAttrsWithoutSpace;
278 
279  bool myClassNeeded;
280  DtObjClassDesc* myBase;
281  std::list<DtObjClassDesc*> myChildren;
282  DtExerciseConn* myExConn;
283  bool myPublished;
284  bool myEverPublished;
285  bool myEverSubscribed;
286  int myNumSubscribeRequests;
287  bool mySubscribeToUnspecifiedAttributesFlag;
288 
290  RTI::AttributeHandle myPrivHandle;
291  RTI::AttributeHandle myMinAttrHand;
292  RTI::AttributeHandle myMaxAttrHand;
293 
294  typedef std::map<RTI::AttributeHandle, DtString> StringToAttributeHandleMap;
295  StringToAttributeHandleMap myStringToHandleMap;
296 
297  DtObjectTagModifierSP myTagModifier;
298 
299  typedef std::vector<RTI::AttributeHandleSetRegionHandleSetPair>
300  RegionHandleVector;
301  RegionHandleVector mySubscribedRegions;
302 
303  DtHlaStateEncoder::DtAttributeEncoder myUnknownAttributeEncoder;
304  DtHlaStateDecoder::DtAttributeDecoder myUnknownAttributeDecoder;
305 
306 protected:
307 
308  static bool theDdmEnabled;
309  static double theSubscriptionTimeDelay;
310 };
311 
312 inline RTI::ObjectClassHandle DtObjClassDesc::handle() const
313 {
314  return myHandle;
315 }
316 
317 inline const RTI::AttributeHandleSet& DtObjClassDesc::attrHandleSet() const
318 {
319  return *myAttrs;
320 }
321 
322 inline const RTI::AttributeHandleSet& DtObjClassDesc::ownAttrHandles() const
323 {
324  return *myOwnAttrs;
325 }
326 
327 inline const char* DtObjClassDesc::name() const
328 {
329  return myName.c_str();
330 }
331 
332 inline int DtObjClassDesc::numAttributes() const
333 {
334  return (int)myAttrs->size();
335 }
336 
337 inline const DtObjClassDesc* DtObjClassDesc::baseClass() const
338 {
339  return myBase;
340 }
341 
343 {
344  return myBase;
345 }
346 
348 {
349  myChildren.push_back(child);
350 }
351 
352 inline DtObjClassDesc* DtObjClassDesc::self() const
353 {
354  return (DtObjClassDesc*) this;
355 }
356 
357 inline RTI::AttributeHandle DtObjClassDesc::privilegeHandle() const
358 {
359  return myPrivHandle;
360 }
361 
362 inline void DtObjClassDesc::setSubscriptionTimeDelay(double delay)
363 {
364  theSubscriptionTimeDelay = delay;
365 }
366 
367 #endif
368 
369 

Document ID: Generated on Wed Oct 23 22:25:48 EDT 2013 from SVN revision 132765
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)