VR-Link API Documentation for HLA 1516
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 "hStateEncoder.h"
18 #include "hStateDecoder.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 
166 
169  virtual bool everSubscribed() const;
170 
172  virtual DtVrlRtiAmbassador* rtiAmb();
173 
175  virtual DtVrlFederateAmbassador* fedAmb();
176 
178  virtual RTI::AttributeHandle privilegeHandle() const;
179 
180  virtual void setUserTagModifier(DtObjectTagModifierSP modifier);
181  virtual DtObjectTagModifierSP userTagModifier();
182 
183 
190  virtual void setSubscribeToUnspecifiedAttributesFlag(bool subscribe);
191  virtual bool subscribeToUnspecifiedAttributesFlag();
192 
198  virtual void setUnknownAttributeEncoder(
200 
203  virtual void setUnknownAttributeDecoder(
205 
207  virtual DtHlaStateEncoder::DtAttributeEncoder unknownAttributeEncoder();
208 
210  virtual DtHlaStateDecoder::DtAttributeDecoder unknownAttributeDecoder();
211 
212 
213 public:
219  static void setSubscriptionTimeDelay(double delay);
220 
221 protected:
222 
224  static void startRegCb(RTI::ObjectClassHandle h,
225  void* usr);
226 
228  static void stopRegCb(RTI::ObjectClassHandle h,
229  void* usr);
230 
231  static void ddmDisabled();
232 
233 protected:
234 
236  virtual void processStartReg(RTI::ObjectClassHandle h);
237 
239  virtual void processStopReg(RTI::ObjectClassHandle h);
240 
242  virtual DtObjClassDesc* self() const;
243 
246  virtual void synchSubscribedAttributes();
247 
250  virtual void fillInAttributeHandleSetRegionHandleSetPairVector(
251  const RTI::AttributeHandleSet& hSet, DtDDMRegionSP region,
252  RTI::AttributeHandleSetRegionHandleSetPairVector& pairVector);
253 
254 protected:
256  RTI::ObjectClassHandle myHandle;
257  RTI::AttributeHandleSet* myAttrs;
258  RTI::AttributeHandleSet* myOwnAttrs;
259  RTI::AttributeHandleSet* mySubAttrs;
260  RTI::AttributeHandleSet* myPubAttrs;
261 
263  RTI::AttributeHandleSet* myAttrsWithSpace;
264 
266  RTI::AttributeHandleSet* myAttrsWithoutSpace;
267 
268  RTI::AttributeHandleSet* mySubAttrsWithSpace;
269  RTI::AttributeHandleSet* mySubAttrsWithoutSpace;
270 
273  std::list<DtObjClassDesc*> myChildren;
280 
282  RTI::AttributeHandle myPrivHandle;
283  RTI::AttributeHandle myMinAttrHand;
284  RTI::AttributeHandle myMaxAttrHand;
285 
286  typedef std::map<RTI::AttributeHandle, DtString> StringToAttributeHandleMap;
288 
290 
291  typedef std::vector<RTI::AttributeHandleSetRegionHandleSetPair>
294 
297 
298 protected:
299 
300  static bool theDdmEnabled;
302 };
303 
304 inline RTI::ObjectClassHandle DtObjClassDesc::handle() const
305 {
306  return myHandle;
307 }
308 
309 inline const RTI::AttributeHandleSet& DtObjClassDesc::attrHandleSet() const
310 {
311  return *myAttrs;
312 }
313 
314 inline const RTI::AttributeHandleSet& DtObjClassDesc::ownAttrHandles() const
315 {
316  return *myOwnAttrs;
317 }
318 
319 inline const char* DtObjClassDesc::name() const
320 {
321  return myName.c_str();
322 }
323 
325 {
326  return (int)myAttrs->size();
327 }
328 
330 {
331  return myBase;
332 }
333 
335 {
336  return myBase;
337 }
338 
340 {
341  myChildren.push_back(child);
342 }
343 
345 {
346  return (DtObjClassDesc*) this;
347 }
348 
349 inline RTI::AttributeHandle DtObjClassDesc::privilegeHandle() const
350 {
351  return myPrivHandle;
352 }
353 
355 {
356  theSubscriptionTimeDelay = delay;
357 }
358 
359 #endif
360 
361 

Document ID: Generated on Wed Aug 14 15:35:11 EDT 2013 from SVN revision 130445
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)