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;
116 virtual DtVrlRtiAmbassador* rtiAmb();
120 virtual bool neededByFederation()
const;
124 virtual bool everPublished()
const;
128 virtual bool everSubscribed()
const;
130 virtual void setUserTagModifier(DtInteractionTagModifierSP modifier);
131 virtual DtInteractionTagModifierSP userTagModifier();
136 static void setMaxParameters(
int num);
137 static int maxParameters();
144 static void setSubscriptionTimeDelay(
double delay);
150 static void startIntersCb(RTI::InteractionClassHandle hand,
154 static void stopIntersCb(RTI::InteractionClassHandle hand,
158 virtual void processStartInters(RTI::InteractionClassHandle hand);
161 virtual void processStopInters(RTI::InteractionClassHandle hand);
166 DtInterClassDesc(
const DtInterClassDesc& orig);
169 DtInterClassDesc& operator=(
const DtInterClassDesc& orig);
174 RTI::InteractionClassHandle myHandle;
176 RTI::ParameterHandleSet* myParams;
177 RTI::ParameterHandleSet* myOwnParams;
179 RTI::AttributeHandleSet* myParams;
180 RTI::AttributeHandleSet* myOwnParams;
182 DtInterClassDesc* myBase;
187 bool myEverPublished;
188 bool myEverSubscribed;
189 RTI::ParameterHandle myMinParamHand;
190 RTI::ParameterHandle myMaxParamHand;
191 int myNumSubscribeRequests;
192 DtInteractionTagModifierSP myTagModifier;
193 std::set<DtDDMRegionSP> mySubscribedRegions;
197 static int theMaxParams;
198 static double theSubscriptionTimeDelay;
201 inline RTI::InteractionClassHandle DtInterClassDesc::handle()
const
206 inline int DtInterClassDesc::numParameters()
const
208 return myParams->size();
211 inline const RTI::ParameterHandleSet& DtInterClassDesc::paramHandleSet() const
213 inline const RTI::AttributeHandleSet& DtInterClassDesc::paramHandleSet() const
220 inline const RTI::ParameterHandleSet& DtInterClassDesc::ownParamHandles() const
222 inline const RTI::AttributeHandleSet& DtInterClassDesc::ownParamHandles() const
228 inline int DtInterClassDesc::maxParameters()
233 inline void DtInterClassDesc::setMaxParameters(
int num)
238 inline const char* DtInterClassDesc::name()
const
240 return myName.c_str();
243 inline const DtInterClassDesc* DtInterClassDesc::baseClass()
const
248 inline DtInterClassDesc* DtInterClassDesc::baseClass()
253 inline void DtInterClassDesc::setSubscriptionTimeDelay(
double delay)
255 theSubscriptionTimeDelay = delay;