8 #ifndef DtInterClassDesc_H_
9 #define DtInterClassDesc_H_
21 class DtVrlRtiAmbassador;
32 DtInterClassDesc(
const char* className,
33 DtInterClassDesc* base, RTI::InteractionClassHandle handle,
37 virtual ~DtInterClassDesc();
40 virtual void addParam(
const char* paramName);
43 virtual RTI::InteractionClassHandle handle()
const;
46 virtual const char* name()
const;
49 virtual const DtInterClassDesc* baseClass()
const;
52 virtual DtInterClassDesc* baseClass();
56 virtual int isOfClass(RTI::InteractionClassHandle hand)
const;
59 virtual int numParameters()
const;
62 virtual RTI::ParameterHandle parameterHandleByName(
const char *paramName);
65 virtual DtString parameterNameByHandle(
const RTI::ParameterHandle& hand);
69 virtual int minParamHandle()
const;
70 virtual int maxParamHandle()
const;
76 virtual const RTI::ParameterHandleSet& paramHandleSet()
const;
78 virtual const RTI::AttributeHandleSet& paramHandleSet()
const;
83 virtual const RTI::ParameterHandleSet& ownParamHandles()
const;
85 virtual const RTI::AttributeHandleSet& ownParamHandles()
const;
89 virtual void publish();
92 virtual void unpublish();
95 virtual void subscribe();
98 virtual void subscribe(DtDDMRegionSP region);
101 virtual void passiveSubscribe();
104 virtual void unsubscribe();
107 virtual void unsubscribe(DtDDMRegionSP region);
110 virtual bool published()
const;
113 virtual bool subscribed()
const;
117 virtual DtInterClassDesc* firstSubscribed();
120 virtual DtVrlRtiAmbassador* rtiAmb();
124 virtual bool neededByFederation()
const;
128 virtual bool everPublished()
const;
132 virtual bool everSubscribed()
const;
134 virtual void setUserTagModifier(DtInteractionTagModifierSP modifier);
135 virtual DtInteractionTagModifierSP userTagModifier();
140 static void setMaxParameters(
int num);
141 static int maxParameters();
148 static void setSubscriptionTimeDelay(
double delay);
154 static void startIntersCb(RTI::InteractionClassHandle hand,
158 static void stopIntersCb(RTI::InteractionClassHandle hand,
162 virtual void processStartInters(RTI::InteractionClassHandle hand);
165 virtual void processStopInters(RTI::InteractionClassHandle hand);
170 DtInterClassDesc(
const DtInterClassDesc& orig);
173 DtInterClassDesc& operator=(
const DtInterClassDesc& orig);
178 RTI::InteractionClassHandle myHandle;
180 RTI::ParameterHandleSet* myParams;
181 RTI::ParameterHandleSet* myOwnParams;
183 RTI::AttributeHandleSet* myParams;
184 RTI::AttributeHandleSet* myOwnParams;
186 DtInterClassDesc* myBase;
191 bool myEverPublished;
192 bool myEverSubscribed;
193 RTI::ParameterHandle myMinParamHand;
194 RTI::ParameterHandle myMaxParamHand;
195 int myNumSubscribeRequests;
196 DtInteractionTagModifierSP myTagModifier;
197 std::set<DtDDMRegionSP> mySubscribedRegions;
201 static int theMaxParams;
202 static double theSubscriptionTimeDelay;
205 inline RTI::InteractionClassHandle DtInterClassDesc::handle()
const
210 inline int DtInterClassDesc::numParameters()
const
212 return (
int)myParams->size();
215 inline const RTI::ParameterHandleSet& DtInterClassDesc::paramHandleSet() const
217 inline const RTI::AttributeHandleSet& DtInterClassDesc::paramHandleSet() const
224 inline const RTI::ParameterHandleSet& DtInterClassDesc::ownParamHandles() const
226 inline const RTI::AttributeHandleSet& DtInterClassDesc::ownParamHandles() const
232 inline int DtInterClassDesc::maxParameters()
237 inline void DtInterClassDesc::setMaxParameters(
int num)
242 inline const char* DtInterClassDesc::name()
const
244 return myName.c_str();
247 inline const DtInterClassDesc* DtInterClassDesc::baseClass()
const
252 inline DtInterClassDesc* DtInterClassDesc::baseClass()
257 inline void DtInterClassDesc::setSubscriptionTimeDelay(
double delay)
259 theSubscriptionTimeDelay = delay;