VR-Link API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 
196 
203  virtual void enableUnknownAttributes();
204 
210  virtual void setUnknownAttributeEncoder(
212 
215  virtual void setUnknownAttributeChecker(
217 
220  virtual void setUnknownAttributeDecoder(
222 
224  virtual DtHlaStateEncoder::DtAttributeEncoder unknownAttributeEncoder();
225 
227  virtual DtHlaStateEncoder::DtAttributeCheckerWithHandle unknownAttributeChecker();
228 
230  virtual DtHlaStateDecoder::DtAttributeDecoder unknownAttributeDecoder();
231 
232 
233 public:
239  static void setSubscriptionTimeDelay(double delay);
240 
241 protected:
242 
244  static void startRegCb(RTI::ObjectClassHandle h,
245  void* usr);
246 
248  static void stopRegCb(RTI::ObjectClassHandle h,
249  void* usr);
250 
251  static void ddmDisabled();
252 
253 protected:
254 
256  virtual void processStartReg(RTI::ObjectClassHandle h);
257 
259  virtual void processStopReg(RTI::ObjectClassHandle h);
260 
262  virtual DtObjClassDesc* self() const;
263 
266  virtual void synchSubscribedAttributes();
267 
270  virtual void fillInAttributeHandleSetRegionHandleSetPairVector(
271  const RTI::AttributeHandleSet& hSet, DtDDMRegionSP region,
272  RTI::AttributeHandleSetRegionHandleSetPairVector& pairVector);
273 
275  virtual void addAttr(const char* attrName, RTI::AttributeHandle attrHandle,
276  RTI::DimensionHandleSet& dimSet, bool isPrivilegeToDelete, bool withSpace = false);
277 
278 
279 protected:
280  DtString myName;
281  RTI::ObjectClassHandle myHandle;
282  RTI::AttributeHandleSet* myAttrs;
283  RTI::AttributeHandleSet* myOwnAttrs;
284  RTI::AttributeHandleSet* mySubAttrs;
285  RTI::AttributeHandleSet* myPubAttrs;
286 
288  RTI::AttributeHandleSet* myAttrsWithSpace;
289 
291  RTI::AttributeHandleSet* myAttrsWithoutSpace;
292 
293  RTI::AttributeHandleSet* mySubAttrsWithSpace;
294  RTI::AttributeHandleSet* mySubAttrsWithoutSpace;
295 
296  bool myClassNeeded;
297  DtObjClassDesc* myBase;
298  std::list<DtObjClassDesc*> myChildren;
299  DtExerciseConn* myExConn;
300  bool myPublished;
301  bool myEverPublished;
302  bool myEverSubscribed;
303  int myNumSubscribeRequests;
304  bool mySubscribeToUnspecifiedAttributesFlag;
305 
307  RTI::AttributeHandle myPrivHandle;
308  RTI::AttributeHandle myMinAttrHand;
309  RTI::AttributeHandle myMaxAttrHand;
310 
311  typedef std::map<RTI::AttributeHandle, DtString> StringToAttributeHandleMap;
312  StringToAttributeHandleMap myStringToHandleMap;
313 
314  DtObjectTagModifierSP myTagModifier;
315 
316  typedef std::vector<RTI::AttributeHandleSetRegionHandleSetPair>
317  RegionHandleVector;
318  RegionHandleVector mySubscribedRegions;
319 
320  DtHlaStateEncoder::DtAttributeEncoder myUnknownAttributeEncoder;
321  DtHlaStateEncoder::DtAttributeCheckerWithHandle myUnknownAttributeChecker;
322  DtHlaStateDecoder::DtAttributeDecoder myUnknownAttributeDecoder;
323 
324 protected:
325 
326  static bool theDdmEnabled;
327  static double theSubscriptionTimeDelay;
328 };
329 
330 inline RTI::ObjectClassHandle DtObjClassDesc::handle() const
331 {
332  return myHandle;
333 }
334 
335 inline const RTI::AttributeHandleSet& DtObjClassDesc::attrHandleSet() const
336 {
337  return *myAttrs;
338 }
339 
340 inline const RTI::AttributeHandleSet& DtObjClassDesc::ownAttrHandles() const
341 {
342  return *myOwnAttrs;
343 }
344 
345 inline const char* DtObjClassDesc::name() const
346 {
347  return myName.c_str();
348 }
349 
350 inline int DtObjClassDesc::numAttributes() const
351 {
352  return (int)myAttrs->size();
353 }
354 
355 inline const DtObjClassDesc* DtObjClassDesc::baseClass() const
356 {
357  return myBase;
358 }
359 
361 {
362  return myBase;
363 }
364 
366 {
367  myChildren.push_back(child);
368 }
369 
370 inline DtObjClassDesc* DtObjClassDesc::self() const
371 {
372  return (DtObjClassDesc*) this;
373 }
374 
375 inline RTI::AttributeHandle DtObjClassDesc::privilegeHandle() const
376 {
377  return myPrivHandle;
378 }
379 
380 inline void DtObjClassDesc::setSubscriptionTimeDelay(double delay)
381 {
382  theSubscriptionTimeDelay = delay;
383 }
384 
385 #endif
386 
387 

Document ID: Generated on Wed Jan 7 13:31:29 EST 2015 from SVN revision 149162
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)