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 = L
"",
bool active =
true );
122 virtual void subscribe(
const DtDDMRegionSet& region,
123 std::wstring
const& updateRateDesignator = L
"",
bool active =
true );
124 virtual void subscribe(
const RTI::AttributeHandleSet& hSet,
125 std::wstring
const& updateRateDesignator = L
"",
126 bool active =
true );
128 virtual void subscribe(
const RTI::AttributeHandleSet& hSet, DtDDMRegionSP region,
129 std::wstring
const& updateRateDesignator = L
"",
bool active =
true);
132 virtual void passiveSubscribe();
135 virtual void unsubscribe();
136 virtual void unsubscribe(
const DtDDMRegionSet& regionSet);
140 virtual void requestUpdates();
141 virtual void requestUpdates(
const DtDDMRegionSet& region);
142 virtual void requestUpdates(
const RTI::AttributeHandleSet& hSet);
143 virtual void requestUpdates(
const RTI::AttributeHandleSet& hSet,
144 DtDDMRegionSP region);
149 virtual const RTI::AttributeHandleSet& publishedAttrs()
const;
153 virtual bool everPublished()
const;
158 virtual const RTI::AttributeHandleSet& subscribedAttrs()
const;
160 virtual const RTI::AttributeHandleSet& attributesWithSpace()
const;
161 virtual const RTI::AttributeHandleSet& attributesWithoutSpace()
const;
163 virtual const RTI::AttributeHandleSet& subscribedAttrsWithSpace()
const;
164 virtual const RTI::AttributeHandleSet& subscribedAttrsWithoutSpace()
const;
169 virtual bool everSubscribed()
const;
172 virtual DtVrlRtiAmbassador* rtiAmb();
175 virtual DtVrlFederateAmbassador* fedAmb();
178 virtual RTI::AttributeHandle privilegeHandle()
const;
180 virtual void setUserTagModifier(DtObjectTagModifierSP modifier);
181 virtual DtObjectTagModifierSP userTagModifier();
190 virtual void setSubscribeToUnspecifiedAttributesFlag(
bool subscribe);
191 virtual bool subscribeToUnspecifiedAttributesFlag();
198 virtual void setUnknownAttributeEncoder(
199 DtHlaStateEncoder::DtAttributeEncoder encoder);
203 virtual void setUnknownAttributeDecoder(
204 DtHlaStateDecoder::DtAttributeDecoder decoder);
207 virtual DtHlaStateEncoder::DtAttributeEncoder unknownAttributeEncoder();
210 virtual DtHlaStateDecoder::DtAttributeDecoder unknownAttributeDecoder();
219 static void setSubscriptionTimeDelay(
double delay);
224 static void startRegCb(RTI::ObjectClassHandle h,
228 static void stopRegCb(RTI::ObjectClassHandle h,
231 static void ddmDisabled();
236 virtual void processStartReg(RTI::ObjectClassHandle h);
239 virtual void processStopReg(RTI::ObjectClassHandle h);
242 virtual DtObjClassDesc*
self()
const;
246 virtual void synchSubscribedAttributes();
250 virtual void fillInAttributeHandleSetRegionHandleSetPairVector(
251 const RTI::AttributeHandleSet& hSet, DtDDMRegionSP region,
252 RTI::AttributeHandleSetRegionHandleSetPairVector& pairVector);
256 RTI::ObjectClassHandle myHandle;
257 RTI::AttributeHandleSet* myAttrs;
258 RTI::AttributeHandleSet* myOwnAttrs;
259 RTI::AttributeHandleSet* mySubAttrs;
260 RTI::AttributeHandleSet* myPubAttrs;
263 RTI::AttributeHandleSet* myAttrsWithSpace;
266 RTI::AttributeHandleSet* myAttrsWithoutSpace;
268 RTI::AttributeHandleSet* mySubAttrsWithSpace;
269 RTI::AttributeHandleSet* mySubAttrsWithoutSpace;
272 DtObjClassDesc* myBase;
273 std::list<DtObjClassDesc*> myChildren;
276 bool myEverPublished;
277 bool myEverSubscribed;
278 int myNumSubscribeRequests;
279 bool mySubscribeToUnspecifiedAttributesFlag;
282 RTI::AttributeHandle myPrivHandle;
283 RTI::AttributeHandle myMinAttrHand;
284 RTI::AttributeHandle myMaxAttrHand;
286 typedef std::map<RTI::AttributeHandle, DtString> StringToAttributeHandleMap;
287 StringToAttributeHandleMap myStringToHandleMap;
289 DtObjectTagModifierSP myTagModifier;
291 typedef std::vector<RTI::AttributeHandleSetRegionHandleSetPair>
293 RegionHandleVector mySubscribedRegions;
295 DtHlaStateEncoder::DtAttributeEncoder myUnknownAttributeEncoder;
296 DtHlaStateDecoder::DtAttributeDecoder myUnknownAttributeDecoder;
300 static bool theDdmEnabled;
301 static double theSubscriptionTimeDelay;
304 inline RTI::ObjectClassHandle DtObjClassDesc::handle()
const
309 inline const RTI::AttributeHandleSet& DtObjClassDesc::attrHandleSet()
const
314 inline const RTI::AttributeHandleSet& DtObjClassDesc::ownAttrHandles()
const
319 inline const char* DtObjClassDesc::name()
const
321 return myName.c_str();
324 inline int DtObjClassDesc::numAttributes()
const
326 return (
int)myAttrs->size();
329 inline const DtObjClassDesc* DtObjClassDesc::baseClass()
const
334 inline DtObjClassDesc* DtObjClassDesc::baseClass()
339 inline void DtObjClassDesc::addChildClass(DtObjClassDesc* child)
341 myChildren.push_back(child);
344 inline DtObjClassDesc* DtObjClassDesc::self()
const
346 return (DtObjClassDesc*)
this;
349 inline RTI::AttributeHandle DtObjClassDesc::privilegeHandle()
const
354 inline void DtObjClassDesc::setSubscriptionTimeDelay(
double delay)
356 theSubscriptionTimeDelay = delay;