MAK RTIspy API Documentation for HLA Evolved
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);
96  virtual bool isFullName(const char* name);
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 
196 
198  virtual DtAttributeHandleSet const & subscribedAttrs() const;
199  virtual DtAttributeHandleSet const & subscribedActiveAttrs() const;
200  virtual DtAttributeHandleSet const & subscribedPassiveAttrs() const;
201 
205  virtual const DtAttributeHandleSet& subscribedAttrs(
206  DtHandle regSetHandle) const;
207 
209  virtual const DtAttributeHandleSet& publishedAttrs() const;
210 
216  virtual const DtAttributeHandleSet& relevantAttrs() const;
217 
220  virtual void remoteSubscribe(
221  const DtAttributeHandleSet& attrs,
222  DtFederateHandle fedHandle,
223  bool isReplacement,
224  DtObjectMgr* objMgr);
225 
229  virtual void remotePassiveSubscribe(const DtAttributeHandleSet& attrs,
230  DtFederateHandle fedHandle, bool replacement, DtObjectMgr* objMgr);
231 
234  virtual void remoteUnsubscribeAttributes(
235  DtFederateHandle fedHandle,
236  const DtAttributeHandleSet& attrs,
237  DtObjectMgr* objMgr);
238 
240  virtual void removeSubscriptions(
241  DtFederateHandle fedHandle,
242  DtObjectMgr* objMgr);
243 
245  virtual int numRemoteFederatesSubscribed();
246 
248  virtual bool remoteFederateIsSubscribed(
249  DtFederateHandle fedHandle) const;
250 
252  virtual DtAttributeHandleSet const* remoteSubscription(
253  DtFederateHandle fedHandle) const;
254 
256  virtual const MAKRti::DtHashList& subscribedFederates() const;
257 
261  virtual bool relevant() const;
262 
266  virtual bool relevant(DtAttributeHandle) const;
267 
270  virtual const MAKRti::DtInetAddr& destinationAddress() const;
271  virtual const MAKRti::DtInetAddr& destinationDevice() const;
272  virtual void setDestination(MAKRti::DtInetAddr addr,
273  MAKRti::DtInetAddr devAddr, bool inclusive, MAKRti::DtInetAddr oldAddr,
274  MAKRti::DtInetAddr oldDevAddr);
275 
279  virtual void setForcedDestinations(DtBitMask const& mask,
280  MAKRti::DtTime delay);
281 
284  virtual bool getForcedDestinations(DtBitMask &mask) const;
285 
287  virtual void setSubscribedRate(float rate, const MAKRti::DtString& name, bool inclusive);
288  virtual float maxSubscribedRate();
289  virtual const MAKRti::DtString& maxSubscribedRateName();
290 
291 #ifdef DDM
292 
293 
294  virtual void remoteSubscribeWithRegion(
295  const DtAttributeHandleSet& attrs,
296  DtFederateHandle fedHandle,
297  DtHandle regionSetHandle,
298  DtObjectMgr* objMgr);
299 
303  virtual DtHandle remoteRegionSubscription(
304  DtFederateHandle fedHandle, DtAttributeHandle attrHand) const;
305 
308  virtual void addMatchingPub(DtHandle regSetHandle,
309  const DtAttributeHandleSet& attributeList);
310  virtual void removeMatchingPub(DtHandle regSetHandle,
311  const DtAttributeHandleSet& attributeList);
312 
315  virtual void moveToOverlapPub(DtHandle regSetHandle,
316  const DtAttributeHandleSet& attributes);
317  virtual void moveToMatchingPub(DtHandle regSetHandle,
318  const DtAttributeHandleSet& attributes);
319 
321  virtual void addOverlapPub(DtHandle regSetHandle,
322  const DtAttributeHandleSet& attributeList);
323 
326  virtual void addMatchingSub(DtHandle regSetHandle,
327  const DtAttributeHandleSet& attributeList);
328  virtual void removeMatchingSub(DtHandle regSetHandle,
329  const DtAttributeHandleSet& attributeList);
330 
333  virtual void moveToOverlapSub(DtHandle regSetHandle);
334  virtual void moveToMatchingSub(DtHandle regSetHandle,
335  const DtAttributeHandleSet& attributes);
336 
338  virtual void addOverlapSub(DtHandle regSetHandle,
339  const DtAttributeHandleSet& attributeList);
340 
342  virtual void subscribeByRegion(DtSubRegionSet const& subRegSet,
343  const DtAttributeHandleSet& attributeList);
344  virtual void unsubscribeByRegion(DtHandle regSetHandle,
345  const DtAttributeHandleSet& attributeList);
346  virtual const DtAttributeHandleSet* getSubscribeByRegion(
347  DtHandle regSetHandle);
348 
350  virtual void getSubscribeByRegionList(DtRegionHandleSet& subRegions) const;
351 
354  virtual int subscribeOverlaps(DtHandle regSetHandle) const;
355 
357  virtual int subscribedWithRegions() const;
358 #endif
359 
360 #ifdef DtMOM
361 
362  virtual void incrementUpdateTally();
363  virtual void setUpdateTally(unsigned long value);
364  virtual unsigned long updateTally();
365  virtual void incrementSentAttributesTally(MAKRti::DtTransportType transport,
366  unsigned int numberAttrs);
367  virtual void setSentAttributesTally(unsigned long value,
368  MAKRti::DtTransportType transport);
369  virtual unsigned long sentAttributesTally(MAKRti::DtTransportType transport);
370 
371  virtual void incrementReflectTally(MAKRti::DtTransportType transport,
372  unsigned int numberAttrs);
373  virtual void setReflectTally(unsigned long value,
374  MAKRti::DtTransportType transport);
375  virtual unsigned long reflectTally(MAKRti::DtTransportType transport);
376  virtual void setReflectAttributesTally(unsigned long value,
377  MAKRti::DtTransportType transport);
378  virtual unsigned long reflectAttributesTally(MAKRti::DtTransportType transport);
379 #endif
380 
382  virtual bool save(DtRtiSaveFile& file);
383  virtual bool restore(DtObjectClassPacket* packet, DtRtiSaveFile& file);
384 
386  virtual void print() const;
387 
389  virtual bool sameAncestry(const DtObjectClassInfo*) const;
390  bool operator==( const DtObjectClassInfo& other ) const;
391  bool operator!=( const DtObjectClassInfo& other ) const;
392 
394  bool isScaffolding() const;
395 
398  bool isUnknown() const;
399 
400  void setIsUnknown(bool unknown);
401 
402 protected:
403 
405  static bool sameObjectClass( const DtObjectClassInfo&, const DtObjectClassInfo& );
406 
408  static bool sameAttrs( const std::vector<DtAttrInfo>&, const std::vector<DtAttrInfo>& );
409 
412  virtual void throwIfNotDefined(
413  const DtAttributeHandleSet& attributeList);
414 
417  virtual void addRemoteSubscription(DtFederateHandle fedHandle,
418  const DtAttributeHandleSet& attrs, bool isReplacement);
419  virtual void deleteRemoteSubscription(DtFederateHandle fedHandle,
420  DtAttributeHandleSet const & attrs);
423  virtual void addRemoteSubscription(DtFederateHandle fedHandle,
424  DtAttributeHandle attrHandle);
425 
430  virtual void updateRelevance(const DtAttributeHandleSet& attrs,
431  DtFederateHandle fedHandle, DtObjectMgr* objMgr);
432 
433 #ifdef DDM
434 
436  virtual void addSet(MAKRti::DtHashList& setList, DtHandle regSetHandle,
437  const DtAttributeHandleSet& attributeList);
438  virtual void removeSet(MAKRti::DtHashList& setList, DtHandle regSetHandle,
439  const DtAttributeHandleSet& attributeList);
440  virtual void moveSet(MAKRti::DtHashList& fromList,
441  MAKRti::DtHashList& toList, DtHandle regSetHandle);
442  virtual void moveSet(MAKRti::DtHashList& fromList,
443  MAKRti::DtHashList& toList, DtHandle regSetHandle,
444  const DtAttributeHandleSet& attrs);
445 
449  virtual DtAttributeHandleSet& collectSubscribedAttributes();
450 
452  void emptyRegionLists();
453 
454 #endif
455 
456  DtObjectClassInfo* self() const;
457 
459  virtual DtAttrInfo* addAttrSorted( const char* attrName,
460  MAKRti::DtTransportType transport, MAKRti::DtOrderType order,
461  DtSharingType sharingType,
462  DtFomUpdateType updateType,
463  const MAKRti::DtString& updateCondition,
464  DtOwnershipType ownership,
465  const MAKRti::DtString& semantics );
466  virtual DtAttrInfo* addAttrUnsorted( const char* attrName,
467  MAKRti::DtTransportType transport, MAKRti::DtOrderType order,
468  DtSharingType sharingType,
469  DtFomUpdateType updateType,
470  const MAKRti::DtString& updateCondition,
471  DtOwnershipType ownership,
472  const MAKRti::DtString& semantics );
473 
475  virtual DtAttrInfo* addAttrUnsorted( const char* attrName,
476  MAKRti::DtTransportType transport, MAKRti::DtOrderType order,
477  DtSpaceHandle space, DtSharingType sharingType,
478  DtFomUpdateType updateType,
479  const MAKRti::DtString& updateCondition,
480  DtOwnershipType ownership,
481  const MAKRti::DtString& semantics );
482  virtual DtAttrInfo* addAttrSorted( const char* attrName,
483  MAKRti::DtTransportType transport, MAKRti::DtOrderType order,
484  DtSpaceHandle space, DtSharingType sharingType,
485  DtFomUpdateType updateType,
486  const MAKRti::DtString& updateCondition,
487  DtOwnershipType ownership,
488  const MAKRti::DtString& semantics );
489 
490 
491 protected:
492 
493  MAKRti::DtString myName;
495  MAKRti::DtString mySemantics;
498  MAKRti::DtFomType myFomType;
505  MAKRti::DtList mySubclasses;
506 
507  MAKRti::DtHashlist myRemoteSubscriptions;
508 
509 
510 #ifdef DtMOM
511  unsigned long myUpdateTally;
512  unsigned long myBestEffortReflectTally;
513  unsigned long myReliableReflectTally;
514  unsigned long myBestEffortSentAttributesTally;
515  unsigned long myBestEffortReflectAttributesTally;
516  unsigned long myReliableSentAttributesTally;
517  unsigned long myReliableReflectAttributesTally;
518 #endif
519 
521  bool myRegsOn;
522 
525 
526 
532 
538 
539  MAKRti::DtInetAddr myAddr;
540  MAKRti::DtInetAddr myDevAddr;
541 
544  MAKRti::DtTime myForceDestinationsTime;
545  MAKRti::DtClock myClock;
546 
547 #ifdef DDM
548  MAKRti::DtHashList mySubByRegion;
549  MAKRti::DtHashList myMatchingPubByRegion;
550  MAKRti::DtHashList myOverlapPubByRegion;
551  MAKRti::DtHashList myMatchingSubByRegion;
552  MAKRti::DtHashList myOverlapSubByRegion;
553  DtAttributeHandleSet myCombinedSubAttrs;
554 #endif
555 
559 
560 protected:
561 
563  static const unsigned int theMaxAttrs;
564 
565 };
566 
567 
571 {
572 public:
573 
576  myRegionHandle(0),
578  {};
579 
581  DtRegionHandle regionHandleValue,
582  DtAttributeHandleSet const& attributesValue,
583  bool regionSetHasDimensionsValue) :
584  myRegionHandle(regionHandleValue),
585  myAttributes(attributesValue),
586  myRegionSetHasDimensions(regionSetHasDimensionsValue)
587  {};
588 
593  {};
594 
597  {};
598 
601  {
602  if (this == &orig)
603  return *this;
605  myAttributes = orig.myAttributes;
607  return *this;
608  };
609 
611  virtual DtRegionHandle regionHandle() const
612  { return myRegionHandle; };
613 
615  virtual DtAttributeHandleSet const& attributes() const
616  { return myAttributes; };
617 
619  virtual void addAttributes(DtAttributeHandleSet const& attrSet)
620  { myAttributes = myAttributes.setUnion(attrSet); };
621 
623  virtual void removeAttributes(DtAttributeHandleSet const& attrSet)
625 
628  virtual bool regionSetHasDimensions() const
630 
631 protected:
632 
636 };
637 
638 
639 
640 #endif
641 
642 

Document ID: Generated on Tue May 7 16:26:47 EDT 2013 from SVN revision 126903
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)