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-2025 MAK Technologies, Inc
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 
80  virtual bool isLeafClass() const;
81 
84  virtual int isOfClass(RTI::ObjectClassHandle hand) const;
85 
88  virtual int numAttributes() const;
89 
91  virtual bool hasAttribute(const char* attrName) const;
92 
95  virtual const RTI::AttributeHandleSet& attrHandleSet() const;
96 
98  virtual const RTI::AttributeHandleSet& ownAttrHandles() const;
99 
106  virtual bool classNeededByFederation();
107 
112  virtual void publish();
113  virtual void publish(const RTI::AttributeHandleSet& hSet);
114 
116  virtual void unpublish();
117 
122 
124  virtual void subscribe(std::wstring const& updateRateDesignator, bool active);
125  virtual void subscribe(const DtDDMRegionSet& region,
126  std::wstring const& updateRateDesignator, bool active);
127  virtual void subscribe(const RTI::AttributeHandleSet& hSet,
128  std::wstring const& updateRateDesignator, bool active);
129  virtual void subscribe(const RTI::AttributeHandleSet& hSet, DtDDMRegionSP region,
130  std::wstring const& updateRateDesignator, bool active);
131 
133  virtual void subscribe(std::wstring const& updateRateDesignator = L"");
134  virtual void subscribe(const DtDDMRegionSet& region,
135  std::wstring const& updateRateDesignator = L"");
136  virtual void subscribe(const RTI::AttributeHandleSet& hSet,
137  std::wstring const& updateRateDesignator = L"");
138  virtual void subscribe(const RTI::AttributeHandleSet& hSet, DtDDMRegionSP region,
139  std::wstring const& updateRateDesignator = L"");
140 
141 
142  virtual void passiveSubscribe();
143 
145  virtual void unsubscribe();
146  virtual void unsubscribe(const DtDDMRegionSet& regionSet);
147 
150  virtual void requestUpdates();
151  virtual void requestUpdates(const DtDDMRegionSet& region);
152  virtual void requestUpdates(const RTI::AttributeHandleSet& hSet);
153  virtual void requestUpdates(const RTI::AttributeHandleSet& hSet,
154  DtDDMRegionSP region);
155 
159  virtual const RTI::AttributeHandleSet& publishedAttrs() const;
160 
163  virtual bool everPublished() const;
164 
168  virtual const RTI::AttributeHandleSet& subscribedAttrs() const;
169 
170  virtual const RTI::AttributeHandleSet& attributesWithSpace() const;
171  virtual const RTI::AttributeHandleSet& attributesWithoutSpace() const;
172 
173  virtual const RTI::AttributeHandleSet& subscribedAttrsWithSpace() const;
174  virtual const RTI::AttributeHandleSet& subscribedAttrsWithoutSpace() const;
175 
178  virtual DtObjClassDesc* firstSubscribed();
179 
182  virtual bool everSubscribed() const;
183 
185  virtual DtVrlRtiAmbassador* rtiAmb();
186 
188  virtual DtVrlFederateAmbassador* fedAmb();
189 
191  virtual RTI::AttributeHandle privilegeHandle() const;
192 
193  virtual void setUserTagModifier(DtObjectTagModifierSP modifier);
194  virtual DtObjectTagModifierSP userTagModifier();
195 
196 
203  virtual void setSubscribeToUnspecifiedAttributesFlag(bool subscribe);
204  virtual bool subscribeToUnspecifiedAttributesFlag();
205 
206 
213  virtual void enableUnknownAttributes();
214 
220  virtual void setUnknownAttributeEncoder(
221  DtHlaStateEncoder::DtAttributeEncoder encoder);
222 
225  virtual void setUnknownAttributeChecker(
226  DtHlaStateEncoder::DtAttributeCheckerWithHandle checker);
227 
230  virtual void setUnknownAttributeDecoder(
231  DtHlaStateDecoder::DtAttributeDecoder decoder);
232 
234  virtual DtHlaStateEncoder::DtAttributeEncoder unknownAttributeEncoder();
235 
237  virtual DtHlaStateEncoder::DtAttributeCheckerWithHandle unknownAttributeChecker();
238 
240  virtual DtHlaStateDecoder::DtAttributeDecoder unknownAttributeDecoder();
241 
242 
243 public:
249  static void setSubscriptionTimeDelay(double delay);
250 
251 protected:
252 
254  static void startRegCb(RTI::ObjectClassHandle h,
255  void* usr);
256 
258  static void stopRegCb(RTI::ObjectClassHandle h,
259  void* usr);
260 
261 protected:
262 
264  virtual void processStartReg(RTI::ObjectClassHandle h);
265 
267  virtual void processStopReg(RTI::ObjectClassHandle h);
268 
270  virtual DtObjClassDesc* self() const;
271 
274  virtual void synchSubscribedAttributes();
275 
278  virtual void fillInAttributeHandleSetRegionHandleSetPairVector(
279  const RTI::AttributeHandleSet& hSet, DtDDMRegionSP region,
280  RTI::AttributeHandleSetRegionHandleSetPairVector& pairVector);
281 
283  virtual void addAttr(const char* attrName, RTI::AttributeHandle attrHandle,
284  RTI::DimensionHandleSet& dimSet, bool isPrivilegeToDelete, bool withSpace = false);
285 
287  virtual bool isMomAttribute(const char * attrName);
288 
289 protected:
290  DtString myName;
291  RTI::ObjectClassHandle myHandle;
292  RTI::AttributeHandleSet* myAttrs;
293  RTI::AttributeHandleSet* myOwnAttrs;
294  RTI::AttributeHandleSet* mySubAttrs;
295  RTI::AttributeHandleSet* myPubAttrs;
296 
298  RTI::AttributeHandleSet* myAttrsWithSpace;
299 
301  RTI::AttributeHandleSet* myAttrsWithoutSpace;
302 
303  RTI::AttributeHandleSet* mySubAttrsWithSpace;
304  RTI::AttributeHandleSet* mySubAttrsWithoutSpace;
305 
306  RTI::DimensionHandleSet myClassDimSet;
307 
308  bool myClassNeeded;
309  DtObjClassDesc* myBase;
310  std::list<DtObjClassDesc*> myChildren;
311  DtExerciseConn* myExConn;
312  bool myPublished;
313  bool myEverPublished;
314  bool myEverSubscribed;
315  int myNumSubscribeRequests;
316  bool mySubscribeToUnspecifiedAttributesFlag;
317 
319  RTI::AttributeHandle myPrivHandle;
320  RTI::AttributeHandle myMinAttrHand;
321  RTI::AttributeHandle myMaxAttrHand;
322 
323  typedef std::map<RTI::AttributeHandle, DtString> StringToAttributeHandleMap;
324  StringToAttributeHandleMap myStringToHandleMap;
325 
326  DtObjectTagModifierSP myTagModifier;
327 
328  typedef std::vector<RTI::AttributeHandleSetRegionHandleSetPair>
329  RegionHandleVector;
330  RegionHandleVector mySubscribedRegions;
331 
332  DtHlaStateEncoder::DtAttributeEncoder myUnknownAttributeEncoder;
333  DtHlaStateEncoder::DtAttributeCheckerWithHandle myUnknownAttributeChecker;
334  DtHlaStateDecoder::DtAttributeDecoder myUnknownAttributeDecoder;
335 
336 protected:
337 
338  static double theSubscriptionTimeDelay;
339 };
340 
341 inline RTI::ObjectClassHandle DtObjClassDesc::handle() const
342 {
343  return myHandle;
344 }
345 
346 inline const RTI::AttributeHandleSet& DtObjClassDesc::attrHandleSet() const
347 {
348  return *myAttrs;
349 }
350 
351 inline const RTI::AttributeHandleSet& DtObjClassDesc::ownAttrHandles() const
352 {
353  return *myOwnAttrs;
354 }
355 
356 inline const char* DtObjClassDesc::name() const
357 {
358  return myName.c_str();
359 }
360 
361 inline int DtObjClassDesc::numAttributes() const
362 {
363  return (int)myAttrs->size();
364 }
365 
366 inline const DtObjClassDesc* DtObjClassDesc::baseClass() const
367 {
368  return myBase;
369 }
370 
371 inline DtObjClassDesc* DtObjClassDesc::baseClass()
372 {
373  return myBase;
374 }
375 
376 inline void DtObjClassDesc::addChildClass(DtObjClassDesc* child)
377 {
378  myChildren.push_back(child);
379 }
380 
381 inline bool DtObjClassDesc::isLeafClass() const
382 {
383  return myChildren.size() == 0;
384 }
385 
386 inline DtObjClassDesc* DtObjClassDesc::self() const
387 {
388  return (DtObjClassDesc*) this;
389 }
390 
391 inline RTI::AttributeHandle DtObjClassDesc::privilegeHandle() const
392 {
393  return myPrivHandle;
394 }
395 
396 inline void DtObjClassDesc::setSubscriptionTimeDelay(double delay)
397 {
398  theSubscriptionTimeDelay = delay;
399 }
400 
401 #endif
402 
403 
Instances of DtExerciseConn are used to provide an application&#39;s interface or connection to the netwo...
Definition: exerciseConnDIS.h:62
#define DT_DLL_VL
Definition: vlMachineTypes.h:108
Contains the DtString class declaration.
This file contains the declaration of DtHlaStateEncoder.
static const xmlChar * attrName
Definition: xmlFedTags.h:116
Instances of DtString are used to represent strings.
Definition: vlString.h:36
This file contains declarations of the classes DtObjectTagModifier and DtInteractionTagModifier.
This file contains typedefs for machine dependant types.
This file contains the declaration of DtHlaStateDecoder.

Document ID: Generated on Thu Oct 16 00:12:25 EDT 2025 from SVN revision 280738
Copyright © 1992-2025 MAK Technologies. All Rights Reserved (www.mak.com)