VR-Link API Documentation for HLA 1516
objClassDesc13.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 && !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 
91  virtual int minAttrHandle() const;
92  virtual int maxAttrHandle() const;
93 
96  virtual const RTI::AttributeHandleSet& attrHandleSet() const;
97 
99  virtual const RTI::AttributeHandleSet& ownAttrHandles() const;
100 
107  virtual bool classNeededByFederation();
108 
113  virtual void publish();
114  virtual void publish(const RTI::AttributeHandleSet& hSet);
115 
117  virtual void unpublish();
118 
122  virtual void subscribe(const RTI::AttributeHandleSet& hSet, bool active = true);
123 
127  virtual void subscribe(const RTI::AttributeHandleSet& hSet, DtDDMRegionSP region,
128  bool active = true);
129 
130  virtual void subscribe();
131  virtual void subscribe(const DtDDMRegionSet& regionSet);
132 
133  virtual void passiveSubscribe();
134 
136  virtual void unsubscribe();
137  virtual void unsubscribe(const DtDDMRegionSet& regionSet);
138 
141  virtual void requestUpdates();
142  virtual void requestUpdates(const DtDDMRegionSet& region);
143  virtual void requestUpdates(const RTI::AttributeHandleSet& hSet);
144  virtual void requestUpdates(const RTI::AttributeHandleSet& hSet,
145  DtDDMRegionSP region);
146 
150  virtual const RTI::AttributeHandleSet& publishedAttrs() const;
151 
154  virtual bool everPublished() const;
155 
159  virtual const RTI::AttributeHandleSet& subscribedAttrs() const;
160 
161  virtual const RTI::AttributeHandleSet& attributesWithSpace() const;
162  virtual const RTI::AttributeHandleSet& attributesWithoutSpace() const;
163 
164  virtual const RTI::AttributeHandleSet& subscribedAttrsWithSpace() const;
165  virtual const RTI::AttributeHandleSet& subscribedAttrsWithoutSpace() const;
166 
169  virtual DtObjClassDesc* firstSubscribed();
170 
173  virtual bool everSubscribed() const;
174 
176  virtual DtVrlRtiAmbassador* rtiAmb();
177 
179  virtual DtVrlFederateAmbassador* fedAmb();
180 
182  virtual RTI::AttributeHandle privilegeHandle() const;
183 
184  virtual void setUserTagModifier(DtObjectTagModifierSP modifier);
185  virtual DtObjectTagModifierSP userTagModifier();
186 
187 
194  virtual void setSubscribeToUnspecifiedAttributesFlag(bool subscribe);
195  virtual bool subscribeToUnspecifiedAttributesFlag();
196 
202  virtual void setUnknownAttributeEncoder(
204 
207  virtual void setUnknownAttributeDecoder(
209 
211  virtual DtHlaStateEncoder::DtAttributeEncoder unknownAttributeEncoder();
212 
214  virtual DtHlaStateDecoder::DtAttributeDecoder unknownAttributeDecoder();
215 
216 public:
219  static void setMaxAttributes(int num);
220  static int maxAttributes();
221 
227  static void setSubscriptionTimeDelay(double delay);
228 
229 protected:
230 
232  static void startRegCb(RTI::ObjectClassHandle h,
233  void* usr);
234 
236  static void stopRegCb(RTI::ObjectClassHandle h,
237  void* usr);
238 
239 protected:
240 
242  virtual void processStartReg(RTI::ObjectClassHandle h);
243 
245  virtual void processStopReg(RTI::ObjectClassHandle h);
246 
248  virtual DtObjClassDesc* self() const;
249 
252  virtual void synchSubscribedAttributes();
253 
255  virtual void addAttr(const char* attrName, RTI::AttributeHandle attrHandle,
256  bool isPrivilegeToDelete, bool withSpace = false);
257 
258 protected:
259  DtString myName;
260  RTI::ObjectClassHandle myHandle;
261  RTI::AttributeHandleSet* myAttrs;
262  RTI::AttributeHandleSet* myOwnAttrs;
263  RTI::AttributeHandleSet* mySubAttrs;
264  RTI::AttributeHandleSet* myPubAttrs;
265 
267  RTI::AttributeHandleSet* myAttrsWithSpace;
268 
270  RTI::AttributeHandleSet* myAttrsWithoutSpace;
271 
272  RTI::AttributeHandleSet* mySubAttrsWithSpace;
273  RTI::AttributeHandleSet* mySubAttrsWithoutSpace;
274 
275  bool myClassNeeded;
276  DtObjClassDesc* myBase;
277  std::list<DtObjClassDesc*> myChildren;
278  DtExerciseConn* myExConn;
279  bool myPublished;
280  bool myEverPublished;
281  bool myEverSubscribed;
282  int myNumSubscribeRequests;
283  bool mySubscribeToUnspecifiedAttributesFlag;
284 
286  RTI::AttributeHandle myPrivHandle;
287  RTI::AttributeHandle myMinAttrHand;
288  RTI::AttributeHandle myMaxAttrHand;
289 
290  typedef std::map<RTI::AttributeHandle, DtString> StringToAttributeHandleMap;
291  StringToAttributeHandleMap myStringToHandleMap;
292 
293  DtObjectTagModifierSP myTagModifier;
294  std::vector<DtDDMRegionSP> mySubscribedRegions;
295  DtHlaStateEncoder::DtAttributeEncoder myUnknownAttributeEncoder;
296  DtHlaStateDecoder::DtAttributeDecoder myUnknownAttributeDecoder;
297 protected:
298  static int theMaxAttrs;
299  static double theSubscriptionTimeDelay;
300 
301 };
302 
303 inline RTI::ObjectClassHandle DtObjClassDesc::handle() const
304 {
305  return myHandle;
306 }
307 
308 inline const RTI::AttributeHandleSet& DtObjClassDesc::attrHandleSet() const
309 {
310  return *myAttrs;
311 }
312 
313 inline const RTI::AttributeHandleSet& DtObjClassDesc::ownAttrHandles() const
314 {
315  return *myOwnAttrs;
316 }
317 
318 inline int DtObjClassDesc::maxAttributes()
319 {
320  return theMaxAttrs;
321 }
322 
323 inline void DtObjClassDesc::setMaxAttributes(int num)
324 {
325  theMaxAttrs = num;
326 }
327 
328 inline const char* DtObjClassDesc::name() const
329 {
330  return myName.c_str();
331 }
332 
333 inline int DtObjClassDesc::numAttributes() const
334 {
335  return myAttrs->size();
336 }
337 
338 inline const DtObjClassDesc* DtObjClassDesc::baseClass() const
339 {
340  return myBase;
341 }
342 
344 {
345  return myBase;
346 }
347 
349 {
350  myChildren.push_back(child);
351 }
352 
353 inline DtObjClassDesc* DtObjClassDesc::self() const
354 {
355  return (DtObjClassDesc*) this;
356 }
357 
358 inline RTI::AttributeHandle DtObjClassDesc::privilegeHandle() const
359 {
360  return myPrivHandle;
361 }
362 
363 inline void DtObjClassDesc::setSubscriptionTimeDelay(double delay)
364 {
365  theSubscriptionTimeDelay = delay;
366 }
367 
368 #endif
369 
370 

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)