MAK RTIspy API Documentation for HLA 1516
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  bool isResigning = false);
244 
246  virtual int numRemoteFederatesSubscribed();
247 
249  virtual bool remoteFederateIsSubscribed(
250  DtFederateHandle fedHandle) const;
251 
253  virtual DtAttributeHandleSet const* remoteSubscription(
254  DtFederateHandle fedHandle) const;
255 
257  virtual const MAKRti::DtHashList& subscribedFederates() const;
258 
262  virtual bool relevant() const;
263 
267  virtual bool relevant(DtAttributeHandle) const;
268 
271  virtual const MAKRti::DtInetAddr& destinationAddress() const;
272  virtual const MAKRti::DtInetAddr& destinationDevice() const;
273  virtual void setDestination(MAKRti::DtInetAddr addr,
274  MAKRti::DtInetAddr devAddr, bool inclusive, MAKRti::DtInetAddr oldAddr,
275  MAKRti::DtInetAddr oldDevAddr);
276 
280  virtual void setForcedDestinations(DtBitMask const& mask,
281  MAKRti::DtTime delay);
282 
285  virtual bool getForcedDestinations(DtBitMask &mask) const;
286 
288  virtual void setSubscribedRate(float rate, const MAKRti::DtString& name, bool inclusive);
289  virtual float maxSubscribedRate();
290  virtual const MAKRti::DtString& maxSubscribedRateName();
291 
292 #ifdef DDM
293 
294 
295  virtual void remoteSubscribeWithRegion(
296  const DtAttributeHandleSet& attrs,
297  DtFederateHandle fedHandle,
298  DtHandle regionSetHandle,
299  DtObjectMgr* objMgr);
300 
304  virtual DtHandle remoteRegionSubscription(
305  DtFederateHandle fedHandle, DtAttributeHandle attrHand) const;
306 
309  virtual void addMatchingPub(DtHandle regSetHandle,
310  const DtAttributeHandleSet& attributeList);
311  virtual void removeMatchingPub(DtHandle regSetHandle,
312  const DtAttributeHandleSet& attributeList);
313 
316  virtual void moveToOverlapPub(DtHandle regSetHandle,
317  const DtAttributeHandleSet& attributes);
318  virtual void moveToMatchingPub(DtHandle regSetHandle,
319  const DtAttributeHandleSet& attributes);
320 
322  virtual void addOverlapPub(DtHandle regSetHandle,
323  const DtAttributeHandleSet& attributeList);
324 
327  virtual void addMatchingSub(DtHandle regSetHandle,
328  const DtAttributeHandleSet& attributeList);
329  virtual void removeMatchingSub(DtHandle regSetHandle,
330  const DtAttributeHandleSet& attributeList);
331 
334  virtual void moveToOverlapSub(DtHandle regSetHandle);
335  virtual void moveToMatchingSub(DtHandle regSetHandle,
336  const DtAttributeHandleSet& attributes);
337 
339  virtual void addOverlapSub(DtHandle regSetHandle,
340  const DtAttributeHandleSet& attributeList);
341 
343  virtual void subscribeByRegion(DtSubRegionSet const& subRegSet,
344  const DtAttributeHandleSet& attributeList);
345  virtual void unsubscribeByRegion(DtHandle regSetHandle,
346  const DtAttributeHandleSet& attributeList);
347  virtual const DtAttributeHandleSet* getSubscribeByRegion(
348  DtHandle regSetHandle);
349 
351  virtual void getSubscribeByRegionList(DtRegionHandleSet& subRegions) const;
352 
355  virtual int subscribeOverlaps(DtHandle regSetHandle) const;
356 
358  virtual int subscribedWithRegions() const;
359 #endif
360 
361 #ifdef DtMOM
362 
363  virtual void incrementUpdateTally();
364  virtual void setUpdateTally(unsigned long value);
365  virtual unsigned long updateTally();
366  virtual void incrementSentAttributesTally(MAKRti::DtTransportType transport,
367  unsigned int numberAttrs);
368  virtual void setSentAttributesTally(unsigned long value,
369  MAKRti::DtTransportType transport);
370  virtual unsigned long sentAttributesTally(MAKRti::DtTransportType transport);
371 
372  virtual void incrementReflectTally(MAKRti::DtTransportType transport,
373  unsigned int numberAttrs);
374  virtual void setReflectTally(unsigned long value,
375  MAKRti::DtTransportType transport);
376  virtual unsigned long reflectTally(MAKRti::DtTransportType transport);
377  virtual void setReflectAttributesTally(unsigned long value,
378  MAKRti::DtTransportType transport);
379  virtual unsigned long reflectAttributesTally(MAKRti::DtTransportType transport);
380 #endif
381 
383  virtual bool save(DtRtiSaveFile& file);
384  virtual bool restore(DtObjectClassPacket* packet, DtRtiSaveFile& file);
385 
387  virtual void print() const;
388 
390  virtual bool sameAncestry(const DtObjectClassInfo*) const;
391  bool operator==( const DtObjectClassInfo& other ) const;
392  bool operator!=( const DtObjectClassInfo& other ) const;
393 
395  bool isScaffolding() const;
396 
399  bool isUnknown() const;
400 
401  void setIsUnknown(bool unknown);
402 
403 protected:
404 
406  static bool sameObjectClass( const DtObjectClassInfo&, const DtObjectClassInfo& );
407 
409  static bool sameAttrs( const std::vector<DtAttrInfo>&, const std::vector<DtAttrInfo>& );
410 
413  virtual void throwIfNotDefined(
414  const DtAttributeHandleSet& attributeList);
415 
418  virtual void addRemoteSubscription(DtFederateHandle fedHandle,
419  const DtAttributeHandleSet& attrs, bool isReplacement);
420  virtual void deleteRemoteSubscription(DtFederateHandle fedHandle,
421  DtAttributeHandleSet const & attrs);
424  virtual void addRemoteSubscription(DtFederateHandle fedHandle,
425  DtAttributeHandle attrHandle);
426 
431  virtual void updateRelevance(const DtAttributeHandleSet& attrs,
432  DtFederateHandle fedHandle, DtObjectMgr* objMgr, bool isResigning = false);
433 
434 #ifdef DDM
435 
437  virtual void addSet(MAKRti::DtHashList& setList, DtHandle regSetHandle,
438  const DtAttributeHandleSet& attributeList);
439  virtual void removeSet(MAKRti::DtHashList& setList, DtHandle regSetHandle,
440  const DtAttributeHandleSet& attributeList);
441  virtual void moveSet(MAKRti::DtHashList& fromList,
442  MAKRti::DtHashList& toList, DtHandle regSetHandle);
443  virtual void moveSet(MAKRti::DtHashList& fromList,
444  MAKRti::DtHashList& toList, DtHandle regSetHandle,
445  const DtAttributeHandleSet& attrs);
446 
450  virtual DtAttributeHandleSet& collectSubscribedAttributes();
451 
453  void emptyRegionLists();
454 
455 #endif
456 
457  DtObjectClassInfo* self() const;
458 
460  virtual DtAttrInfo* addAttrSorted( const char* attrName,
461  MAKRti::DtTransportType transport, MAKRti::DtOrderType order,
462  DtSharingType sharingType,
463  DtFomUpdateType updateType,
464  const MAKRti::DtString& updateCondition,
465  DtOwnershipType ownership,
466  const MAKRti::DtString& semantics );
467  virtual DtAttrInfo* addAttrUnsorted( 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 
476  virtual DtAttrInfo* addAttrUnsorted( const char* attrName,
477  MAKRti::DtTransportType transport, MAKRti::DtOrderType order,
478  DtSpaceHandle space, DtSharingType sharingType,
479  DtFomUpdateType updateType,
480  const MAKRti::DtString& updateCondition,
481  DtOwnershipType ownership,
482  const MAKRti::DtString& semantics );
483  virtual DtAttrInfo* addAttrSorted( 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 
491 
492 protected:
493 
494  MAKRti::DtString myName;
496  MAKRti::DtString mySemantics;
499  MAKRti::DtFomType myFomType;
506  MAKRti::DtList mySubclasses;
507 
508  MAKRti::DtHashlist myRemoteSubscriptions;
509 
510 
511 #ifdef DtMOM
512  unsigned long myUpdateTally;
513  unsigned long myBestEffortReflectTally;
514  unsigned long myReliableReflectTally;
515  unsigned long myBestEffortSentAttributesTally;
516  unsigned long myBestEffortReflectAttributesTally;
517  unsigned long myReliableSentAttributesTally;
518  unsigned long myReliableReflectAttributesTally;
519 #endif
520 
522  bool myRegsOn;
523 
526 
527 
533 
539 
540  MAKRti::DtInetAddr myAddr;
541  MAKRti::DtInetAddr myDevAddr;
542 
545  MAKRti::DtTime myForceDestinationsTime;
546  MAKRti::DtClock myClock;
547 
548 #ifdef DDM
549  MAKRti::DtHashList mySubByRegion;
550  MAKRti::DtHashList myMatchingPubByRegion;
551  MAKRti::DtHashList myOverlapPubByRegion;
552  MAKRti::DtHashList myMatchingSubByRegion;
553  MAKRti::DtHashList myOverlapSubByRegion;
554  DtAttributeHandleSet myCombinedSubAttrs;
555 #endif
556 
560 
561 protected:
562 
564  static const unsigned int theMaxAttrs;
565 
566 };
567 
568 
572 {
573 public:
574 
577  myRegionHandle(0),
579  {};
580 
582  DtRegionHandle regionHandleValue,
583  DtAttributeHandleSet const& attributesValue,
584  bool regionSetHasDimensionsValue) :
585  myRegionHandle(regionHandleValue),
586  myAttributes(attributesValue),
587  myRegionSetHasDimensions(regionSetHasDimensionsValue)
588  {};
589 
594  {};
595 
598  {};
599 
602  {
603  if (this == &orig)
604  return *this;
606  myAttributes = orig.myAttributes;
608  return *this;
609  };
610 
612  virtual DtRegionHandle regionHandle() const
613  { return myRegionHandle; };
614 
616  virtual DtAttributeHandleSet const& attributes() const
617  { return myAttributes; };
618 
620  virtual void addAttributes(DtAttributeHandleSet const& attrSet)
621  { myAttributes = myAttributes.setUnion(attrSet); };
622 
624  virtual void removeAttributes(DtAttributeHandleSet const& attrSet)
626 
629  virtual bool regionSetHasDimensions() const
631 
632 protected:
633 
637 };
638 
639 
640 
641 #endif
642 
643 

Document ID: Generated on Fri Mar 14 19:08:55 EDT 2014 from SVN revision 137085
Copyright © 2005-2014 VT MÄK Inc. All Rights Reserved (www.mak.com)