VR-Link API Documentation for DIS
 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;
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 
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, bool active);
122  virtual void subscribe(const DtDDMRegionSet& region,
123  std::wstring const& updateRateDesignator, bool active);
124  virtual void subscribe(const RTI::AttributeHandleSet& hSet,
125  std::wstring const& updateRateDesignator, bool active);
126  virtual void subscribe(const RTI::AttributeHandleSet& hSet, DtDDMRegionSP region,
127  std::wstring const& updateRateDesignator, bool active);
128 
130  virtual void subscribe(std::wstring const& updateRateDesignator = L"");
131  virtual void subscribe(const DtDDMRegionSet& region,
132  std::wstring const& updateRateDesignator = L"");
133  virtual void subscribe(const RTI::AttributeHandleSet& hSet,
134  std::wstring const& updateRateDesignator = L"");
135  virtual void subscribe(const RTI::AttributeHandleSet& hSet, DtDDMRegionSP region,
136  std::wstring const& updateRateDesignator = L"");
137 
138 
139  virtual void passiveSubscribe();
140 
142  virtual void unsubscribe();
143  virtual void unsubscribe(const DtDDMRegionSet& regionSet);
144 
147  virtual void requestUpdates();
148  virtual void requestUpdates(const DtDDMRegionSet& region);
149  virtual void requestUpdates(const RTI::AttributeHandleSet& hSet);
150  virtual void requestUpdates(const RTI::AttributeHandleSet& hSet,
151  DtDDMRegionSP region);
152 
156  virtual const RTI::AttributeHandleSet& publishedAttrs() const;
157 
160  virtual bool everPublished() const;
161 
165  virtual const RTI::AttributeHandleSet& subscribedAttrs() const;
166 
167  virtual const RTI::AttributeHandleSet& attributesWithSpace() const;
168  virtual const RTI::AttributeHandleSet& attributesWithoutSpace() const;
169 
170  virtual const RTI::AttributeHandleSet& subscribedAttrsWithSpace() const;
171  virtual const RTI::AttributeHandleSet& subscribedAttrsWithoutSpace() const;
172 
175  virtual DtObjClassDesc* firstSubscribed();
176 
179  virtual bool everSubscribed() const;
180 
182  virtual DtVrlRtiAmbassador* rtiAmb();
183 
185  virtual DtVrlFederateAmbassador* fedAmb();
186 
188  virtual RTI::AttributeHandle privilegeHandle() const;
189 
190  virtual void setUserTagModifier(DtObjectTagModifierSP modifier);
191  virtual DtObjectTagModifierSP userTagModifier();
192 
193 
200  virtual void setSubscribeToUnspecifiedAttributesFlag(bool subscribe);
201  virtual bool subscribeToUnspecifiedAttributesFlag();
202 
203 
210  virtual void enableUnknownAttributes();
211 
217  virtual void setUnknownAttributeEncoder(
218  DtHlaStateEncoder::DtAttributeEncoder encoder);
219 
222  virtual void setUnknownAttributeChecker(
223  DtHlaStateEncoder::DtAttributeCheckerWithHandle checker);
224 
227  virtual void setUnknownAttributeDecoder(
228  DtHlaStateDecoder::DtAttributeDecoder decoder);
229 
231  virtual DtHlaStateEncoder::DtAttributeEncoder unknownAttributeEncoder();
232 
234  virtual DtHlaStateEncoder::DtAttributeCheckerWithHandle unknownAttributeChecker();
235 
237  virtual DtHlaStateDecoder::DtAttributeDecoder unknownAttributeDecoder();
238 
239 
240 public:
246  static void setSubscriptionTimeDelay(double delay);
247 
248 protected:
249 
251  static void startRegCb(RTI::ObjectClassHandle h,
252  void* usr);
253 
255  static void stopRegCb(RTI::ObjectClassHandle h,
256  void* usr);
257 
258 protected:
259 
261  virtual void processStartReg(RTI::ObjectClassHandle h);
262 
264  virtual void processStopReg(RTI::ObjectClassHandle h);
265 
267  virtual DtObjClassDesc* self() const;
268 
271  virtual void synchSubscribedAttributes();
272 
275  virtual void fillInAttributeHandleSetRegionHandleSetPairVector(
276  const RTI::AttributeHandleSet& hSet, DtDDMRegionSP region,
277  RTI::AttributeHandleSetRegionHandleSetPairVector& pairVector);
278 
280  virtual void addAttr(const char* attrName, RTI::AttributeHandle attrHandle,
281  RTI::DimensionHandleSet& dimSet, bool isPrivilegeToDelete, bool withSpace = false);
282 
284  virtual bool isMomAttribute(const char * attrName);
285 
286 protected:
287  DtString myName;
288  RTI::ObjectClassHandle myHandle;
289  RTI::AttributeHandleSet* myAttrs;
290  RTI::AttributeHandleSet* myOwnAttrs;
291  RTI::AttributeHandleSet* mySubAttrs;
292  RTI::AttributeHandleSet* myPubAttrs;
293 
295  RTI::AttributeHandleSet* myAttrsWithSpace;
296 
298  RTI::AttributeHandleSet* myAttrsWithoutSpace;
299 
300  RTI::AttributeHandleSet* mySubAttrsWithSpace;
301  RTI::AttributeHandleSet* mySubAttrsWithoutSpace;
302 
303  bool myClassNeeded;
304  DtObjClassDesc* myBase;
305  std::list<DtObjClassDesc*> myChildren;
306  DtExerciseConn* myExConn;
307  bool myPublished;
308  bool myEverPublished;
309  bool myEverSubscribed;
310  int myNumSubscribeRequests;
311  bool mySubscribeToUnspecifiedAttributesFlag;
312 
314  RTI::AttributeHandle myPrivHandle;
315  RTI::AttributeHandle myMinAttrHand;
316  RTI::AttributeHandle myMaxAttrHand;
317 
318  typedef std::map<RTI::AttributeHandle, DtString> StringToAttributeHandleMap;
319  StringToAttributeHandleMap myStringToHandleMap;
320 
321  DtObjectTagModifierSP myTagModifier;
322 
323  typedef std::vector<RTI::AttributeHandleSetRegionHandleSetPair>
324  RegionHandleVector;
325  RegionHandleVector mySubscribedRegions;
326 
327  DtHlaStateEncoder::DtAttributeEncoder myUnknownAttributeEncoder;
328  DtHlaStateEncoder::DtAttributeCheckerWithHandle myUnknownAttributeChecker;
329  DtHlaStateDecoder::DtAttributeDecoder myUnknownAttributeDecoder;
330 
331 protected:
332 
333  static double theSubscriptionTimeDelay;
334 };
335 
336 inline RTI::ObjectClassHandle DtObjClassDesc::handle() const
337 {
338  return myHandle;
339 }
340 
341 inline const RTI::AttributeHandleSet& DtObjClassDesc::attrHandleSet() const
342 {
343  return *myAttrs;
344 }
345 
346 inline const RTI::AttributeHandleSet& DtObjClassDesc::ownAttrHandles() const
347 {
348  return *myOwnAttrs;
349 }
350 
351 inline const char* DtObjClassDesc::name() const
352 {
353  return myName.c_str();
354 }
355 
356 inline int DtObjClassDesc::numAttributes() const
357 {
358  return (int)myAttrs->size();
359 }
360 
361 inline const DtObjClassDesc* DtObjClassDesc::baseClass() const
362 {
363  return myBase;
364 }
365 
366 inline DtObjClassDesc* DtObjClassDesc::baseClass()
367 {
368  return myBase;
369 }
370 
371 inline void DtObjClassDesc::addChildClass(DtObjClassDesc* child)
372 {
373  myChildren.push_back(child);
374 }
375 
376 inline DtObjClassDesc* DtObjClassDesc::self() const
377 {
378  return (DtObjClassDesc*) this;
379 }
380 
381 inline RTI::AttributeHandle DtObjClassDesc::privilegeHandle() const
382 {
383  return myPrivHandle;
384 }
385 
386 inline void DtObjClassDesc::setSubscriptionTimeDelay(double delay)
387 {
388  theSubscriptionTimeDelay = delay;
389 }
390 
391 #endif
392 
393 

Document ID: Generated on Fri Dec 2 02:42:08 EST 2016 from SVN revision 171416
Copyright © 2005-2016 VT MÄK. All Rights Reserved (www.mak.com)