MAK RTIspy API Documentation for HLA 1516
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
objClassInfo.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1998 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 /*********************************************************************
6 ** $RCSfile: objClassInfo.h,v $ $Revision: 1.74 $ $State: Exp $
7 *********************************************************************/
8 
11 
12 #ifndef DtObjectClassInfo_H_
13 #define DtObjectClassInfo_H_
14 
15 #include <vlutil/vlList.h>
16 #include <vlutil/vlHashlist.h>
17 #include <vlutil/vlFedTarget.h>
18 #include <vlutil/vlInetAddr.h>
19 #include "rtiMsConfig.h"
20 #include "internalTypes.h"
21 #include "attrHandSet.h"
22 #include "attrInfo.h"
23 #include "fomMgr.h"
24 #include "fedTargetHelper.h"
25 #include <vector>
26 
27 class DtRtiSaveFile;
28 class DtObjectMgr;
29 class DtDataDistMgr;
31 class DtBitMask;
32 class DtSubRegionSet;
33 class DtAttrInfo;
34 
35 typedef std::vector<DtAttrInfo> DtAttrVector;
36 
38 {
39 public:
40 
42  DtObjectClassInfo(const char* name, DtObjectClassInfo* base,
43  DtObjectClassHandle handle, DtSharingType sharing,
44  const MAKRti::DtString& semantics);
46 
48  virtual ~DtObjectClassInfo();
49 
51  DtObjectClassInfo& operator=(const DtObjectClassInfo& orig);
52 
54  virtual void setFomType(MAKRti::DtFomType type);
55  virtual MAKRti::DtFomType fomType() const;
56 
58  virtual DtAttrInfo* addAttr(const char* attrName,
59  MAKRti::DtTransportType transport,
60  MAKRti::DtOrderType order,
61  DtSharingType sharingType,
62  DtFomUpdateType updateType,
63  const MAKRti::DtString& updateCondition,
64  DtOwnershipType ownership,
65  const MAKRti::DtString& semantics,
66  bool addSorted);
67 
69  virtual DtAttrInfo* addAttr(const char* attrName,
70  MAKRti::DtTransportType transport,
71  MAKRti::DtOrderType order,
72  DtSpaceHandle space,
73  DtSharingType sharingType,
74  DtFomUpdateType updateType,
75  const MAKRti::DtString& updateCondition,
76  DtOwnershipType ownership,
77  const MAKRti::DtString& semantics,
78  bool addSorted);
79 
81  virtual const char* name() const;
82 
84  virtual DtSharingType sharing() const;
85  virtual void setSharing(DtSharingType share);
86 
88  virtual const char* semantics() const;
89  virtual void setSemantics(const MAKRti::DtString& sem);
90 
94  virtual bool isName(const char* name) const;
96  virtual bool isFullName(const char* name) const;
97 
99  virtual DtObjectClassHandle handle() const;
100  virtual void setHandle(DtObjectClassHandle handleValue);
101 
104  virtual DtObjectClassHandle discoveredHandle() const;
105  virtual void setDiscoveredHandle(DtObjectClassHandle handleValue);
106 
108  virtual DtObjectClassInfo* baseClass() const;
109 
111  virtual void setBaseClass(DtObjectClassInfo* base);
112 
114  virtual int isOfClass(DtObjectClassHandle handle) const;
115 
117  virtual MAKRti::DtList* subclasses();
118 
120  virtual void addSubclass(DtObjectClassInfo* sub);
121 
123  virtual DtAttrInfo* attrByName(const char* theName);
124  virtual DtAttrInfo* attrByHandle(const DtAttributeHandle theHandle);
125 
127  virtual const DtAttrInfo* attrByName(const char* theName) const;
128  virtual const DtAttrInfo* attrByHandle(
129  const DtAttributeHandle theHandle) const;
130 
132  virtual DtAttributeHandle attrHandle (
133  const char* theName) const;
134 
136  virtual char* attrName (
137  DtAttributeHandle theHandle) const;
138 
140  virtual MAKRti::DtTransportType attrTransport(
141  DtAttributeHandle theHandle) const;
142 
144  virtual MAKRti::DtOrderType attrOrder(
145  DtAttributeHandle theHandle) const;
146 
148  virtual DtSpaceHandle attrSpace(
149  DtAttributeHandle theHandle) const;
150 
152  virtual DtAttrVector const& attrs() const;
153 
155  virtual int numAttributes() const;
156 
158  virtual const DtAttributeHandleSet& allAttrs() const;
159 
163  virtual void publish(DtAttributeHandleSet const & attributeList,
164  DtObjectMgr* objMgr, bool isReplacement, bool isRepublish);
165  virtual void unpublishAttributes(DtAttributeHandleSet const & attributeList,
166  bool implicitUnpublishPrivilegeToDelete, DtObjectMgr* objMgr);
167 
169  virtual bool published() const;
170 
172  virtual void subscribe(const DtAttributeHandleSet& attributeList,
173  bool isPassiveValue,
174 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
176  bool isReplacement=false);
177 #else
178  bool isReplacement=true);
180 #endif
181  virtual void unsubscribeClass();
182  virtual void unsubscribeAttributes(
183  DtAttributeHandleSet const & attributeList);
184 
186  virtual bool subscribed() const;
187 
189  virtual bool isPassive() const;
190 
193  virtual const bool isSubscribed(
194  DtAttributeHandle attrHandle, DtRegionHandle regSetHandle) const;
195  virtual const bool isActiveSubscribed(
196  DtAttributeHandle attrHandle, DtRegionHandle regSetHandle) const;
197 
198 
200  virtual DtAttributeHandleSet const & subscribedAttrs() const;
201  virtual DtAttributeHandleSet const & subscribedActiveAttrs() const;
202  virtual DtAttributeHandleSet const & subscribedPassiveAttrs() const;
203 
207  virtual const DtAttributeHandleSet& subscribedAttrs(
208  DtHandle regSetHandle) const;
209  virtual DtAttributeHandleSet const & subscribedActiveAttrs(
210  DtHandle regSetHandle) const;
211 
213  virtual const DtAttributeHandleSet& publishedAttrs() const;
214 
220  virtual const DtAttributeHandleSet& relevantAttrs() const;
221 
224  virtual void remoteSubscribe(
225  const DtAttributeHandleSet& attrs,
226  DtFederateHandle fedHandle,
227  bool isReplacement,
228  DtObjectMgr* objMgr);
229 
233  virtual void remotePassiveSubscribe(const DtAttributeHandleSet& attrs,
234  DtFederateHandle fedHandle, bool replacement, DtObjectMgr* objMgr);
235 
238  virtual void remoteUnsubscribeAttributes(
239  DtFederateHandle fedHandle,
240  const DtAttributeHandleSet& attrs,
241  DtObjectMgr* objMgr);
242 
244  virtual void removeSubscriptions(
245  DtFederateHandle fedHandle,
246  DtObjectMgr* objMgr,
247  bool isResigning = false);
248 
250  virtual int numRemoteFederatesSubscribed();
251 
253  virtual bool remoteFederateIsSubscribed(
254  DtFederateHandle fedHandle) const;
255 
257  virtual DtAttributeHandleSet const* remoteSubscription(
258  DtFederateHandle fedHandle) const;
259 
261  virtual const MAKRti::DtHashList& subscribedFederates() const;
262 
266  virtual bool relevant() const;
267 
271  virtual bool relevant(DtAttributeHandle) const;
272 
275  virtual const MAKRti::DtInetAddr& destinationAddress() const;
276  virtual const MAKRti::DtInetAddr& destinationDevice() const;
277  virtual void setDestination(MAKRti::DtInetAddr addr,
278  MAKRti::DtInetAddr devAddr, bool inclusive, MAKRti::DtInetAddr oldAddr,
279  MAKRti::DtInetAddr oldDevAddr);
280 
284  virtual void setForcedDestinations(DtBitMask const& mask,
285  MAKRti::DtTime delay);
286 
289  virtual bool getForcedDestinations(DtBitMask &mask) const;
290 
292  virtual void setSubscribedRate(float rate, const MAKRti::DtString& name, bool inclusive);
293  virtual float maxSubscribedRate();
294  virtual const MAKRti::DtString& maxSubscribedRateName();
295 
296 #ifdef DDM
297  virtual void remoteSubscribeWithRegion(
300  const DtAttributeHandleSet& attrs,
301  DtFederateHandle fedHandle,
302  DtHandle regionSetHandle,
303  DtObjectMgr* objMgr);
304 
308  virtual DtHandle remoteRegionSubscription(
309  DtFederateHandle fedHandle, DtAttributeHandle attrHand) const;
310 
313  virtual void addMatchingPub(DtHandle regSetHandle,
314  const DtAttributeHandleSet& attributeList);
315  virtual void removeMatchingPub(DtHandle regSetHandle,
316  const DtAttributeHandleSet& attributeList);
317 
320  virtual void moveToOverlapPub(DtHandle regSetHandle,
321  const DtAttributeHandleSet& attributes);
322  virtual void moveToMatchingPub(DtHandle regSetHandle,
323  const DtAttributeHandleSet& attributes);
324 
326  virtual void addOverlapPub(DtHandle regSetHandle,
327  const DtAttributeHandleSet& attributeList);
328 
331  virtual void addMatchingSub(DtHandle regSetHandle,
332  const DtAttributeHandleSet& attributeList);
333  virtual void removeMatchingSub(DtHandle regSetHandle,
334  const DtAttributeHandleSet& attributeList);
335 
338  virtual void moveToOverlapSub(DtHandle regSetHandle);
339  virtual void moveToMatchingSub(DtHandle regSetHandle,
340  const DtAttributeHandleSet& attributes);
341 
343  virtual void addOverlapSub(DtHandle regSetHandle,
344  const DtAttributeHandleSet& attributeList);
345 
347  virtual void subscribeByRegion(DtSubRegionSet const& subRegSet,
348  const DtAttributeHandleSet& attributeList, bool active);
349  virtual void unsubscribeByRegion(DtHandle regSetHandle,
350  const DtAttributeHandleSet& attributeList);
351  virtual const DtAttributeHandleSet* getSubscribeByRegion(
352  DtHandle regSetHandle);
353 
355  virtual void getSubscribeByRegionList(DtRegionHandleSet& subRegions) const;
356 
359  virtual int subscribeOverlaps(DtHandle regSetHandle) const;
360 
362  virtual int subscribedWithRegions() const;
363 #endif
364 
365 #ifdef DtMOM
366  virtual void incrementUpdateTally();
368  virtual void setUpdateTally(unsigned long value);
369  virtual unsigned long updateTally();
370  virtual void incrementSentAttributesTally(MAKRti::DtTransportType transport,
371  unsigned int numberAttrs);
372  virtual void setSentAttributesTally(unsigned long value,
373  MAKRti::DtTransportType transport);
374  virtual unsigned long sentAttributesTally(MAKRti::DtTransportType transport);
375 
376  virtual void incrementReflectTally(MAKRti::DtTransportType transport,
377  unsigned int numberAttrs);
378  virtual void setReflectTally(unsigned long value,
379  MAKRti::DtTransportType transport);
380  virtual unsigned long reflectTally(MAKRti::DtTransportType transport);
381  virtual void setReflectAttributesTally(unsigned long value,
382  MAKRti::DtTransportType transport);
383  virtual unsigned long reflectAttributesTally(MAKRti::DtTransportType transport);
384 #endif
385 
387  virtual bool save(DtRtiSaveFile& file);
388  virtual bool restore(DtObjectClassPacket* packet, DtRtiSaveFile& file);
389 
391  virtual void print() const;
392 
394  virtual bool sameAncestry(const DtObjectClassInfo*) const;
395  bool operator==( const DtObjectClassInfo& other ) const;
396  bool operator!=( const DtObjectClassInfo& other ) const;
397 
399  bool isScaffolding() const;
400 
403  bool isUnknown() const;
404 
405  void setIsUnknown(bool unknown);
406 
408  virtual void getAttrInfoForAttrHandleSet(DtAttributeHandleSet input, DtAttrVector& attrVector) const;
409 
410 protected:
411 
413  static bool sameObjectClass( const DtObjectClassInfo&, const DtObjectClassInfo& );
414 
416  static bool sameAttrs( const std::vector<DtAttrInfo>&, const std::vector<DtAttrInfo>& );
417 
420  virtual void throwIfNotDefined(
421  const DtAttributeHandleSet& attributeList);
422 
425  virtual void addRemoteSubscription(DtFederateHandle fedHandle,
426  const DtAttributeHandleSet& attrs, bool isReplacement);
427  virtual void deleteRemoteSubscription(DtFederateHandle fedHandle,
428  DtAttributeHandleSet const & attrs);
431  virtual void addRemoteSubscription(DtFederateHandle fedHandle,
432  DtAttributeHandle attrHandle);
433 
438  virtual void updateRelevance(const DtAttributeHandleSet& attrs,
439  DtFederateHandle fedHandle, DtObjectMgr* objMgr, bool isResigning = false);
440 
441 #ifdef DDM
442 
444  virtual void addSet(MAKRti::DtHashList& setList, DtHandle regSetHandle,
445  const DtAttributeHandleSet& attributeList);
446  virtual void removeSet(MAKRti::DtHashList& setList, DtHandle regSetHandle,
447  const DtAttributeHandleSet& attributeList);
448  virtual void moveSet(MAKRti::DtHashList& fromList,
449  MAKRti::DtHashList& toList, DtHandle regSetHandle);
450  virtual void moveSet(MAKRti::DtHashList& fromList,
451  MAKRti::DtHashList& toList, DtHandle regSetHandle,
452  const DtAttributeHandleSet& attrs);
453 
457  virtual DtAttributeHandleSet& collectSubscribedAttributes();
458 
460  void emptyRegionLists();
461 
462 #endif
463 
464  DtObjectClassInfo* self() const;
465 
467  virtual DtAttrInfo* addAttrSorted( const char* attrName,
468  MAKRti::DtTransportType transport, MAKRti::DtOrderType order,
469  DtSharingType sharingType,
470  DtFomUpdateType updateType,
471  const MAKRti::DtString& updateCondition,
472  DtOwnershipType ownership,
473  const MAKRti::DtString& semantics );
474  virtual DtAttrInfo* addAttrUnsorted( const char* attrName,
475  MAKRti::DtTransportType transport, MAKRti::DtOrderType order,
476  DtSharingType sharingType,
477  DtFomUpdateType updateType,
478  const MAKRti::DtString& updateCondition,
479  DtOwnershipType ownership,
480  const MAKRti::DtString& semantics );
481 
483  virtual DtAttrInfo* addAttrUnsorted( const char* attrName,
484  MAKRti::DtTransportType transport, MAKRti::DtOrderType order,
485  DtSpaceHandle space, DtSharingType sharingType,
486  DtFomUpdateType updateType,
487  const MAKRti::DtString& updateCondition,
488  DtOwnershipType ownership,
489  const MAKRti::DtString& semantics );
490  virtual DtAttrInfo* addAttrSorted( const char* attrName,
491  MAKRti::DtTransportType transport, MAKRti::DtOrderType order,
492  DtSpaceHandle space, DtSharingType sharingType,
493  DtFomUpdateType updateType,
494  const MAKRti::DtString& updateCondition,
495  DtOwnershipType ownership,
496  const MAKRti::DtString& semantics );
497 
500  virtual bool intersectPublished(DtObjectClassInfo* objClass, const DtAttributeHandleSet& listToIntersect);
501 
502 protected:
503 
504  MAKRti::DtString myName;
506  MAKRti::DtString mySemantics;
509  MAKRti::DtFomType myFomType;
516  MAKRti::DtList mySubclasses;
517 
518  MAKRti::DtHashlist myRemoteSubscriptions;
519 
520 
521 #ifdef DtMOM
522  unsigned long myUpdateTally;
523  unsigned long myBestEffortReflectTally;
524  unsigned long myReliableReflectTally;
525  unsigned long myBestEffortSentAttributesTally;
526  unsigned long myBestEffortReflectAttributesTally;
527  unsigned long myReliableSentAttributesTally;
528  unsigned long myReliableReflectAttributesTally;
529 #endif
530 
532  bool myRegsOn;
533 
536 
537 
543 
549 
550  MAKRti::DtInetAddr myAddr;
551  MAKRti::DtInetAddr myDevAddr;
552 
555  MAKRti::DtTime myForceDestinationsTime;
556  MAKRti::DtClock myClock;
557 
558 #ifdef DDM
559  MAKRti::DtHashList mySubByRegion;
560  MAKRti::DtHashList myMatchingPubByRegion;
561  MAKRti::DtHashList myOverlapPubByRegion;
562  MAKRti::DtHashList myMatchingSubByRegion;
563  MAKRti::DtHashList myOverlapSubByRegion;
564  DtAttributeHandleSet myCombinedSubAttrs;
565  MAKRti::DtHashList myActiveSubByRegion;
566  DtAttributeHandleSet myCombinedActiveSubAttrs;
567 #endif
568 
572 
573 protected:
574 
576  static const unsigned int theMaxAttrs;
577 
578 };
579 
580 
584 {
585 public:
586 
589  myRegionHandle(0),
591  {};
592 
594  DtRegionHandle regionHandleValue,
595  DtAttributeHandleSet const& attributesValue,
596  bool regionSetHasDimensionsValue) :
597  myRegionHandle(regionHandleValue),
598  myAttributes(attributesValue),
599  myRegionSetHasDimensions(regionSetHasDimensionsValue)
600  {};
601 
606  {};
607 
610  {};
611 
614  {
615  if (this == &orig)
616  return *this;
618  myAttributes = orig.myAttributes;
620  return *this;
621  };
622 
624  virtual DtRegionHandle regionHandle() const
625  { return myRegionHandle; };
626 
628  virtual DtAttributeHandleSet const& attributes() const
629  { return myAttributes; };
630 
632  virtual void addAttributes(DtAttributeHandleSet const& attrSet)
633  { myAttributes = myAttributes.setUnion(attrSet); };
634 
636  virtual void removeAttributes(DtAttributeHandleSet const& attrSet)
638 
641  virtual bool regionSetHasDimensions() const
643 
644 protected:
645 
649 };
650 
651 
652 
653 #endif
654 
655 
bool myRegionSetHasDimensions
Definition: objClassInfo.h:648
DtAttributeHandleSet mySubscribedPassiveSet
Definition: objClassInfo.h:542
MAKRti::DtList mySubclasses
Definition: objClassInfo.h:516
bool myRegsOn
Have we most recently told the federate to turn on or off registration.
Definition: objClassInfo.h:532
virtual void addAttributes(DtAttributeHandleSet const &attrSet)
Add in more attributes.
Definition: objClassInfo.h:632
std::vector< DtAttrInfo > DtAttrVector
Definition: fomMgr.h:40
enum DtFomUpdateType_enum DtFomUpdateType
Update type for object.
MAKRti::DtString myName
Definition: objClassInfo.h:504
virtual DtAttributeHandleSet removeSetIntersection(const DtAttributeHandleSet &) const
DtAttrVector myAttrs
Definition: objClassInfo.h:534
virtual DtAttributeHandleSet setUnion(const DtAttributeHandleSet &) const
Definition: attrInfo.h:28
DtSharingType mySharing
Definition: objClassInfo.h:505
virtual bool regionSetHasDimensions() const
Return bool: Does the region set associated with these subscribed attribute have any dimensions...
Definition: objClassInfo.h:641
MAKRti::DtFomType myFomType
Definition: objClassInfo.h:509
DtObjectClassHandle myDiscoveredHandle
Definition: objClassInfo.h:508
bool myExplicitPubPrivToDel
Definition: objClassInfo.h:513
DtHandle DtRegionHandle
Definition: internalTypes.h:44
DtHandle DtObjectClassHandle
Definition: internalTypes.h:31
DtObjectClassInfo * myBase
Definition: objClassInfo.h:515
static const DtAttributeHandleSet theEmptySet
Definition: objClassInfo.h:575
enum DtSharingType_enum DtSharingType
DtSubByRegionAttributes()
Constructors.
Definition: objClassInfo.h:588
DtAttributeHandleSet myAttrSet
Definition: objClassInfo.h:538
bool myIsUnknown
Indicates whether this class is an unknown class, merely present to indicate that it is in other FOM ...
Definition: objClassInfo.h:571
virtual ~DtSubByRegionAttributes()
Destructor.
Definition: objClassInfo.h:609
Definition: attrHandSet.h:37
DtBitMask * myForceDestinationsMask
Create this bit mask to temporarily force destinations after publish.
Definition: objClassInfo.h:554
virtual DtAttributeHandleSet const & attributes() const
The subscribed attributes.
Definition: objClassInfo.h:628
std::set< DtRegionHandle > DtRegionHandleSet
Definition: internalTypes.h:45
virtual DtRegionHandle regionHandle() const
The region associated with the subscribed attributes.
Definition: objClassInfo.h:624
DtHandle DtFederateHandle
Definition: internalTypes.h:29
MAKRti::DtInetAddr myAddr
Definition: objClassInfo.h:550
MAKRti::DtTime myForceDestinationsTime
Definition: objClassInfo.h:555
DtAttributeHandleSet myRelevantSet
Attributes that could cause object discovery at a remote federate if they are published or become pub...
Definition: objClassInfo.h:548
Record used to keep track of subscribe by region.
Definition: objClassInfo.h:583
MAKRti::DtHashlist myRemoteSubscriptions
Definition: objClassInfo.h:518
DtSubByRegionAttributes & operator=(DtSubByRegionAttributes const &orig)
Assignment operator.
Definition: objClassInfo.h:613
int myFirstAttribute
Definition: objClassInfo.h:535
long DtSpaceHandle
Definition: internalTypes.h:26
The object manager class processes the object management services.
Definition: objMgr.h:90
static const unsigned int theMaxAttrs
Definition: objClassInfo.h:576
DtObjectClassHandle myHandle
Definition: objClassInfo.h:507
DtAttributeHandleSet mySubscribedActiveSet
Definition: objClassInfo.h:541
DtSubByRegionAttributes(DtRegionHandle regionHandleValue, DtAttributeHandleSet const &attributesValue, bool regionSetHasDimensionsValue)
Definition: objClassInfo.h:593
unsigned long DtHandle
The internal types.
Definition: internalTypes.h:25
DtHandle DtAttributeHandle
Definition: internalTypes.h:37
virtual void removeAttributes(DtAttributeHandleSet const &attrSet)
Remove attributes.
Definition: objClassInfo.h:636
enum DtOwnershipType_enum DtOwnershipType
bool myIsPassive
Definition: objClassInfo.h:512
DtBitMask represents a variable length bit-field which may be used to represent an array of boolean d...
Definition: bitMask.h:24
#define DT_DLL_LRC
Definition: rtiMsConfig.h:126
DtAttributeHandleSet myAttributes
Definition: objClassInfo.h:647
Definition: saveFile.h:21
MAKRti::DtInetAddr myDevAddr
Definition: objClassInfo.h:551
DtSubByRegionAttributes(DtSubByRegionAttributes const &orig)
Definition: objClassInfo.h:602
The declaration of internal types.
Definition: objClassInfo.h:37
bool mySubscribed
Definition: objClassInfo.h:510
bool myPublished
Definition: objClassInfo.h:511
MAKRti::DtString mySemantics
Definition: objClassInfo.h:506
Definition: objClassPacket.h:20
DtAttributeHandleSet mySubscribedSet
Definition: objClassInfo.h:540
bool myExplicitUnpubPrivToDel
Definition: objClassInfo.h:514
DtAttributeHandleSet myPublishedSet
Definition: objClassInfo.h:539
DtRegionHandle myRegionHandle
Definition: objClassInfo.h:642
MAKRti::DtClock myClock
Definition: objClassInfo.h:556

Document ID: Generated on Thu May 11 15:55:32 EDT 2023 from SVN revision 254743
Copyright © 2005-2020 MAK Technologies Inc. All Rights Reserved (www.mak.com)