VR-Link API Documentation for DIS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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;
26 class DtVrlFederateAmbassador;
27 class DtVrlRtiAmbassador;
28 
41 class DT_DLL_VL DtObjClassDesc
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 
203  virtual void enableUnknownAttributes();
204 
207  virtual void setUnknownAttributeEncoder(
208  DtHlaStateEncoder::DtAttributeEncoder encoder);
209 
212  virtual void setUnknownAttributeChecker(
213  DtHlaStateEncoder::DtAttributeCheckerWithHandle checker);
214 
215 
218  virtual void setUnknownAttributeDecoder(
219  DtHlaStateDecoder::DtAttributeDecoder decoder);
220 
222  virtual DtHlaStateEncoder::DtAttributeEncoder unknownAttributeEncoder();
223 
225  virtual DtHlaStateEncoder::DtAttributeCheckerWithHandle unknownAttributeChecker();
226 
228  virtual DtHlaStateDecoder::DtAttributeDecoder unknownAttributeDecoder();
229 
230 public:
233  static void setMaxAttributes(int num);
234  static int maxAttributes();
235 
241  static void setSubscriptionTimeDelay(double delay);
242 
243 protected:
244 
246  static void startRegCb(RTI::ObjectClassHandle h,
247  void* usr);
248 
250  static void stopRegCb(RTI::ObjectClassHandle h,
251  void* usr);
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 
269  virtual void addAttr(const char* attrName, RTI::AttributeHandle attrHandle,
270  bool isPrivilegeToDelete, bool withSpace = false);
271 
272 protected:
273  DtString myName;
274  RTI::ObjectClassHandle myHandle;
275  RTI::AttributeHandleSet* myAttrs;
276  RTI::AttributeHandleSet* myOwnAttrs;
277  RTI::AttributeHandleSet* mySubAttrs;
278  RTI::AttributeHandleSet* myPubAttrs;
279 
281  RTI::AttributeHandleSet* myAttrsWithSpace;
282 
284  RTI::AttributeHandleSet* myAttrsWithoutSpace;
285 
286  RTI::AttributeHandleSet* mySubAttrsWithSpace;
287  RTI::AttributeHandleSet* mySubAttrsWithoutSpace;
288 
289  bool myClassNeeded;
290  DtObjClassDesc* myBase;
291  std::list<DtObjClassDesc*> myChildren;
292  DtExerciseConn* myExConn;
293  bool myPublished;
294  bool myEverPublished;
295  bool myEverSubscribed;
296  int myNumSubscribeRequests;
297  bool mySubscribeToUnspecifiedAttributesFlag;
298 
300  RTI::AttributeHandle myPrivHandle;
301  RTI::AttributeHandle myMinAttrHand;
302  RTI::AttributeHandle myMaxAttrHand;
303 
304  typedef std::map<RTI::AttributeHandle, DtString> StringToAttributeHandleMap;
305  StringToAttributeHandleMap myStringToHandleMap;
306 
307  DtObjectTagModifierSP myTagModifier;
308  std::vector<DtDDMRegionSP> mySubscribedRegions;
309  DtHlaStateEncoder::DtAttributeEncoder myUnknownAttributeEncoder;
310  DtHlaStateEncoder::DtAttributeCheckerWithHandle myUnknownAttributeChecker;
311  DtHlaStateDecoder::DtAttributeDecoder myUnknownAttributeDecoder;
312 protected:
313  static int theMaxAttrs;
314  static double theSubscriptionTimeDelay;
315 
316 };
317 
318 inline RTI::ObjectClassHandle DtObjClassDesc::handle() const
319 {
320  return myHandle;
321 }
322 
323 inline const RTI::AttributeHandleSet& DtObjClassDesc::attrHandleSet() const
324 {
325  return *myAttrs;
326 }
327 
328 inline const RTI::AttributeHandleSet& DtObjClassDesc::ownAttrHandles() const
329 {
330  return *myOwnAttrs;
331 }
332 
333 inline int DtObjClassDesc::maxAttributes()
334 {
335  return theMaxAttrs;
336 }
337 
338 inline void DtObjClassDesc::setMaxAttributes(int num)
339 {
340  theMaxAttrs = num;
341 }
342 
343 inline const char* DtObjClassDesc::name() const
344 {
345  return myName.c_str();
346 }
347 
348 inline int DtObjClassDesc::numAttributes() const
349 {
350  return myAttrs->size();
351 }
352 
353 inline const DtObjClassDesc* DtObjClassDesc::baseClass() const
354 {
355  return myBase;
356 }
357 
358 inline DtObjClassDesc* DtObjClassDesc::baseClass()
359 {
360  return myBase;
361 }
362 
363 inline void DtObjClassDesc::addChildClass(DtObjClassDesc* child)
364 {
365  myChildren.push_back(child);
366 }
367 
368 inline DtObjClassDesc* DtObjClassDesc::self() const
369 {
370  return (DtObjClassDesc*) this;
371 }
372 
373 inline RTI::AttributeHandle DtObjClassDesc::privilegeHandle() const
374 {
375  return myPrivHandle;
376 }
377 
378 inline void DtObjClassDesc::setSubscriptionTimeDelay(double delay)
379 {
380  theSubscriptionTimeDelay = delay;
381 }
382 
383 #endif
384 
385 

Document ID: Generated on Fri May 15 06:36:13 EDT 2015 from SVN revision 153263
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)