MAK RTIspy API Documentation for HLA Evolved
 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 
179  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 
298 
299  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 
367  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 
407 protected:
408 
410  static bool sameObjectClass( const DtObjectClassInfo&, const DtObjectClassInfo& );
411 
413  static bool sameAttrs( const std::vector<DtAttrInfo>&, const std::vector<DtAttrInfo>& );
414 
417  virtual void throwIfNotDefined(
418  const DtAttributeHandleSet& attributeList);
419 
422  virtual void addRemoteSubscription(DtFederateHandle fedHandle,
423  const DtAttributeHandleSet& attrs, bool isReplacement);
424  virtual void deleteRemoteSubscription(DtFederateHandle fedHandle,
425  DtAttributeHandleSet const & attrs);
428  virtual void addRemoteSubscription(DtFederateHandle fedHandle,
429  DtAttributeHandle attrHandle);
430 
435  virtual void updateRelevance(const DtAttributeHandleSet& attrs,
436  DtFederateHandle fedHandle, DtObjectMgr* objMgr, bool isResigning = false);
437 
438 #ifdef DDM
439 
441  virtual void addSet(MAKRti::DtHashList& setList, DtHandle regSetHandle,
442  const DtAttributeHandleSet& attributeList);
443  virtual void removeSet(MAKRti::DtHashList& setList, DtHandle regSetHandle,
444  const DtAttributeHandleSet& attributeList);
445  virtual void moveSet(MAKRti::DtHashList& fromList,
446  MAKRti::DtHashList& toList, DtHandle regSetHandle);
447  virtual void moveSet(MAKRti::DtHashList& fromList,
448  MAKRti::DtHashList& toList, DtHandle regSetHandle,
449  const DtAttributeHandleSet& attrs);
450 
454  virtual DtAttributeHandleSet& collectSubscribedAttributes();
455 
457  void emptyRegionLists();
458 
459 #endif
460 
461  DtObjectClassInfo* self() const;
462 
464  virtual DtAttrInfo* addAttrSorted( const char* attrName,
465  MAKRti::DtTransportType transport, MAKRti::DtOrderType order,
466  DtSharingType sharingType,
467  DtFomUpdateType updateType,
468  const MAKRti::DtString& updateCondition,
469  DtOwnershipType ownership,
470  const MAKRti::DtString& semantics );
471  virtual DtAttrInfo* addAttrUnsorted( const char* attrName,
472  MAKRti::DtTransportType transport, MAKRti::DtOrderType order,
473  DtSharingType sharingType,
474  DtFomUpdateType updateType,
475  const MAKRti::DtString& updateCondition,
476  DtOwnershipType ownership,
477  const MAKRti::DtString& semantics );
478 
480  virtual DtAttrInfo* addAttrUnsorted( const char* attrName,
481  MAKRti::DtTransportType transport, MAKRti::DtOrderType order,
482  DtSpaceHandle space, DtSharingType sharingType,
483  DtFomUpdateType updateType,
484  const MAKRti::DtString& updateCondition,
485  DtOwnershipType ownership,
486  const MAKRti::DtString& semantics );
487  virtual DtAttrInfo* addAttrSorted( const char* attrName,
488  MAKRti::DtTransportType transport, MAKRti::DtOrderType order,
489  DtSpaceHandle space, DtSharingType sharingType,
490  DtFomUpdateType updateType,
491  const MAKRti::DtString& updateCondition,
492  DtOwnershipType ownership,
493  const MAKRti::DtString& semantics );
494 
497  virtual bool intersectPublished(DtObjectClassInfo* objClass, const DtAttributeHandleSet& listToIntersect);
498 
499 protected:
500 
501  MAKRti::DtString myName;
503  MAKRti::DtString mySemantics;
506  MAKRti::DtFomType myFomType;
513  MAKRti::DtList mySubclasses;
514 
515  MAKRti::DtHashlist myRemoteSubscriptions;
516 
517 
518 #ifdef DtMOM
519  unsigned long myUpdateTally;
520  unsigned long myBestEffortReflectTally;
521  unsigned long myReliableReflectTally;
522  unsigned long myBestEffortSentAttributesTally;
523  unsigned long myBestEffortReflectAttributesTally;
524  unsigned long myReliableSentAttributesTally;
525  unsigned long myReliableReflectAttributesTally;
526 #endif
527 
529  bool myRegsOn;
530 
533 
534 
540 
546 
547  MAKRti::DtInetAddr myAddr;
548  MAKRti::DtInetAddr myDevAddr;
549 
552  MAKRti::DtTime myForceDestinationsTime;
553  MAKRti::DtClock myClock;
554 
555 #ifdef DDM
556  MAKRti::DtHashList mySubByRegion;
557  MAKRti::DtHashList myMatchingPubByRegion;
558  MAKRti::DtHashList myOverlapPubByRegion;
559  MAKRti::DtHashList myMatchingSubByRegion;
560  MAKRti::DtHashList myOverlapSubByRegion;
561  DtAttributeHandleSet myCombinedSubAttrs;
562  MAKRti::DtHashList myActiveSubByRegion;
563  DtAttributeHandleSet myCombinedActiveSubAttrs;
564 #endif
565 
569 
570 protected:
571 
573  static const unsigned int theMaxAttrs;
574 
575 };
576 
577 
581 {
582 public:
583 
586  myRegionHandle(0),
588  {};
589 
591  DtRegionHandle regionHandleValue,
592  DtAttributeHandleSet const& attributesValue,
593  bool regionSetHasDimensionsValue) :
594  myRegionHandle(regionHandleValue),
595  myAttributes(attributesValue),
596  myRegionSetHasDimensions(regionSetHasDimensionsValue)
597  {};
598 
603  {};
604 
607  {};
608 
611  {
612  if (this == &orig)
613  return *this;
615  myAttributes = orig.myAttributes;
617  return *this;
618  };
619 
621  virtual DtRegionHandle regionHandle() const
622  { return myRegionHandle; };
623 
625  virtual DtAttributeHandleSet const& attributes() const
626  { return myAttributes; };
627 
629  virtual void addAttributes(DtAttributeHandleSet const& attrSet)
630  { myAttributes = myAttributes.setUnion(attrSet); };
631 
633  virtual void removeAttributes(DtAttributeHandleSet const& attrSet)
635 
638  virtual bool regionSetHasDimensions() const
640 
641 protected:
642 
646 };
647 
648 
649 
650 #endif
651 
652 

Document ID: Generated on Mon Mar 21 09:41:37 EDT 2016 from SVN revision 163228
Copyright © 2005-2015 VT MÄK Inc. All Rights Reserved (www.mak.com)