26 class DtVrlFederateAmbassador;
27 class DtVrlRtiAmbassador;
47 DtObjClassDesc(
const char* className,
49 RTI::ObjectClassHandle handle,
53 virtual ~DtObjClassDesc();
56 virtual void addAttr(
const char*
attrName,
bool withSpace =
false);
59 virtual RTI::ObjectClassHandle handle()
const;
62 virtual RTI::AttributeHandle attributeHandleByName(
const char *
attrName)
const;
65 virtual DtString attributeNameByHandle(
const RTI::AttributeHandle& hand)
const;
68 virtual const char* name()
const;
71 virtual const DtObjClassDesc* baseClass()
const;
74 virtual DtObjClassDesc* baseClass();
77 virtual void addChildClass(DtObjClassDesc* child);
81 virtual int isOfClass(RTI::ObjectClassHandle hand)
const;
85 virtual int numAttributes()
const;
88 virtual bool hasAttribute(
const char*
attrName)
const;
92 virtual const RTI::AttributeHandleSet& attrHandleSet()
const;
95 virtual const RTI::AttributeHandleSet& ownAttrHandles()
const;
103 virtual bool classNeededByFederation();
109 virtual void publish();
110 virtual void publish(
const RTI::AttributeHandleSet& hSet);
113 virtual void unpublish();
121 virtual void subscribe(std::wstring
const& updateRateDesignator,
bool active);
122 virtual void subscribe(
const DtDDMRegionSet& region,
123 std::wstring
const& updateRateDesignator,
bool active);
124 virtual void subscribe(
const RTI::AttributeHandleSet& hSet,
125 std::wstring
const& updateRateDesignator,
bool active);
126 virtual void subscribe(
const RTI::AttributeHandleSet& hSet, DtDDMRegionSP region,
127 std::wstring
const& updateRateDesignator,
bool active);
130 virtual void subscribe(std::wstring
const& updateRateDesignator = L
"");
131 virtual void subscribe(
const DtDDMRegionSet& region,
132 std::wstring
const& updateRateDesignator = L
"");
133 virtual void subscribe(
const RTI::AttributeHandleSet& hSet,
134 std::wstring
const& updateRateDesignator = L
"");
135 virtual void subscribe(
const RTI::AttributeHandleSet& hSet, DtDDMRegionSP region,
136 std::wstring
const& updateRateDesignator = L
"");
139 virtual void passiveSubscribe();
142 virtual void unsubscribe();
143 virtual void unsubscribe(
const DtDDMRegionSet& regionSet);
147 virtual void requestUpdates();
148 virtual void requestUpdates(
const DtDDMRegionSet& region);
149 virtual void requestUpdates(
const RTI::AttributeHandleSet& hSet);
150 virtual void requestUpdates(
const RTI::AttributeHandleSet& hSet,
151 DtDDMRegionSP region);
156 virtual const RTI::AttributeHandleSet& publishedAttrs()
const;
160 virtual bool everPublished()
const;
165 virtual const RTI::AttributeHandleSet& subscribedAttrs()
const;
167 virtual const RTI::AttributeHandleSet& attributesWithSpace()
const;
168 virtual const RTI::AttributeHandleSet& attributesWithoutSpace()
const;
170 virtual const RTI::AttributeHandleSet& subscribedAttrsWithSpace()
const;
171 virtual const RTI::AttributeHandleSet& subscribedAttrsWithoutSpace()
const;
175 virtual DtObjClassDesc* firstSubscribed();
179 virtual bool everSubscribed()
const;
182 virtual DtVrlRtiAmbassador* rtiAmb();
185 virtual DtVrlFederateAmbassador* fedAmb();
188 virtual RTI::AttributeHandle privilegeHandle()
const;
190 virtual void setUserTagModifier(DtObjectTagModifierSP modifier);
191 virtual DtObjectTagModifierSP userTagModifier();
200 virtual void setSubscribeToUnspecifiedAttributesFlag(
bool subscribe);
201 virtual bool subscribeToUnspecifiedAttributesFlag();
210 virtual void enableUnknownAttributes();
217 virtual void setUnknownAttributeEncoder(
218 DtHlaStateEncoder::DtAttributeEncoder encoder);
222 virtual void setUnknownAttributeChecker(
223 DtHlaStateEncoder::DtAttributeCheckerWithHandle checker);
227 virtual void setUnknownAttributeDecoder(
228 DtHlaStateDecoder::DtAttributeDecoder decoder);
231 virtual DtHlaStateEncoder::DtAttributeEncoder unknownAttributeEncoder();
234 virtual DtHlaStateEncoder::DtAttributeCheckerWithHandle unknownAttributeChecker();
237 virtual DtHlaStateDecoder::DtAttributeDecoder unknownAttributeDecoder();
246 static void setSubscriptionTimeDelay(
double delay);
251 static void startRegCb(RTI::ObjectClassHandle h,
255 static void stopRegCb(RTI::ObjectClassHandle h,
261 virtual void processStartReg(RTI::ObjectClassHandle h);
264 virtual void processStopReg(RTI::ObjectClassHandle h);
267 virtual DtObjClassDesc*
self()
const;
271 virtual void synchSubscribedAttributes();
275 virtual void fillInAttributeHandleSetRegionHandleSetPairVector(
276 const RTI::AttributeHandleSet& hSet, DtDDMRegionSP region,
277 RTI::AttributeHandleSetRegionHandleSetPairVector& pairVector);
280 virtual void addAttr(
const char*
attrName, RTI::AttributeHandle attrHandle,
281 RTI::DimensionHandleSet& dimSet,
bool isPrivilegeToDelete,
bool withSpace =
false);
284 virtual bool isMomAttribute(
const char *
attrName);
288 RTI::ObjectClassHandle myHandle;
289 RTI::AttributeHandleSet* myAttrs;
290 RTI::AttributeHandleSet* myOwnAttrs;
291 RTI::AttributeHandleSet* mySubAttrs;
292 RTI::AttributeHandleSet* myPubAttrs;
295 RTI::AttributeHandleSet* myAttrsWithSpace;
298 RTI::AttributeHandleSet* myAttrsWithoutSpace;
300 RTI::AttributeHandleSet* mySubAttrsWithSpace;
301 RTI::AttributeHandleSet* mySubAttrsWithoutSpace;
304 DtObjClassDesc* myBase;
305 std::list<DtObjClassDesc*> myChildren;
308 bool myEverPublished;
309 bool myEverSubscribed;
310 int myNumSubscribeRequests;
311 bool mySubscribeToUnspecifiedAttributesFlag;
314 RTI::AttributeHandle myPrivHandle;
315 RTI::AttributeHandle myMinAttrHand;
316 RTI::AttributeHandle myMaxAttrHand;
318 typedef std::map<RTI::AttributeHandle, DtString> StringToAttributeHandleMap;
319 StringToAttributeHandleMap myStringToHandleMap;
321 DtObjectTagModifierSP myTagModifier;
323 typedef std::vector<RTI::AttributeHandleSetRegionHandleSetPair>
325 RegionHandleVector mySubscribedRegions;
327 DtHlaStateEncoder::DtAttributeEncoder myUnknownAttributeEncoder;
328 DtHlaStateEncoder::DtAttributeCheckerWithHandle myUnknownAttributeChecker;
329 DtHlaStateDecoder::DtAttributeDecoder myUnknownAttributeDecoder;
333 static double theSubscriptionTimeDelay;
336 inline RTI::ObjectClassHandle DtObjClassDesc::handle()
const
341 inline const RTI::AttributeHandleSet& DtObjClassDesc::attrHandleSet()
const
346 inline const RTI::AttributeHandleSet& DtObjClassDesc::ownAttrHandles()
const
351 inline const char* DtObjClassDesc::name()
const
353 return myName.c_str();
356 inline int DtObjClassDesc::numAttributes()
const
358 return (
int)myAttrs->size();
361 inline const DtObjClassDesc* DtObjClassDesc::baseClass()
const
366 inline DtObjClassDesc* DtObjClassDesc::baseClass()
371 inline void DtObjClassDesc::addChildClass(DtObjClassDesc* child)
373 myChildren.push_back(child);
376 inline DtObjClassDesc* DtObjClassDesc::self()
const
378 return (DtObjClassDesc*)
this;
381 inline RTI::AttributeHandle DtObjClassDesc::privilegeHandle()
const
386 inline void DtObjClassDesc::setSubscriptionTimeDelay(
double delay)
388 theSubscriptionTimeDelay = delay;