7 #ifndef DtVrlFederateAmbassador_H_
8 #define DtVrlFederateAmbassador_H_
25 typedef void (*DtFederateSaveCb)(
29 typedef void (*DtFederateRestoreCb)(
33 typedef void (*DtSynchPointCb)(
37 typedef void (*DtAnnounceSynchPointCb)(
45 class DT_DLL_VL DtVrlFederateAmbassador :
public DtNullFederateAmbassador
47 struct DtScopeChangeCallbackData
49 DtVrlFederateAmbassador* fedAmb;
50 RTI::ObjectHandle handle;
55 DtVrlFederateAmbassador();
58 virtual ~DtVrlFederateAmbassador()
59 throw( RTI::FederateInternalError );
63 DtVrlFederateAmbassador( const DtVrlFederateAmbassador& src );
66 DtVrlFederateAmbassador& operator=(const DtVrlFederateAmbassador& src );
72 DtHlaObjectManager* hlaObjMgr,
73 DtInteractionManager* interMgr );
77 static DtVrlFederateAmbassador* create();
82 virtual
void addReflectAttributeValuesCb( RTI::ObjectHandle
id,
83 DtReflectAttributeValuesCb cb,
void* usr );
84 virtual
void removeReflectAttributeValuesCb( RTI::ObjectHandle
id,
85 DtReflectAttributeValuesCb cb,
void* usr );
89 virtual
void addDiscoverObjectCb( RTI::ObjectClassHandle hand,
90 DtDiscoverObjectCb cb,
void* usr );
91 virtual
void removeDiscoverObjectCb( RTI::ObjectClassHandle hand,
92 DtDiscoverObjectCb cb,
void* usr );
96 virtual
void addRemoveObjectCb( RTI::ObjectHandle
id,
97 DtRemoveObjectCb cb,
void* usr );
98 virtual
void removeRemoveObjectCb( RTI::ObjectHandle
id,
99 DtRemoveObjectCb cb,
void* usr );
103 virtual
void addStartRegCb( RTI::ObjectClassHandle hand,
104 DtStartRegCb cb,
void* usr );
105 virtual
void removeStartRegCb( RTI::ObjectClassHandle hand,
106 DtStartRegCb cb,
void* usr );
110 virtual
void addStopRegCb( RTI::ObjectClassHandle hand,
111 DtStopRegCb cb,
void* usr );
112 virtual
void removeStopRegCb( RTI::ObjectClassHandle hand,
113 DtStopRegCb cb,
void* usr );
117 virtual
void addUpdatesOnCb( RTI::ObjectHandle hand,
118 DtUpdatesOnCb cb,
void* usr );
119 virtual
void removeUpdatesOnCb( RTI::ObjectHandle hand,
120 DtUpdatesOnCb cb,
void* usr );
124 virtual
void addUpdatesOffCb( RTI::ObjectHandle hand,
125 DtUpdatesOffCb cb,
void* usr );
126 virtual
void removeUpdatesOffCb( RTI::ObjectHandle hand,
127 DtUpdatesOffCb cb,
void* usr );
131 virtual
void addStartInteractionsCb( RTI::InteractionClassHandle hand,
132 DtStartStopInterCb cb,
void* usr );
133 virtual
void removeStartInteractionsCb( RTI::InteractionClassHandle hand,
134 DtStartStopInterCb cb,
void* usr );
138 virtual
void addStopInteractionsCb( RTI::InteractionClassHandle hand,
139 DtStartStopInterCb cb,
void* usr );
140 virtual
void removeStopInteractionsCb( RTI::InteractionClassHandle hand,
141 DtStartStopInterCb cb,
void* usr );
145 virtual
void addReceiveInteractionCb( RTI::InteractionClassHandle hand,
146 DtReceiveInteractionCb cb,
void* usr, DtDDMRegionSP region = DtDDMRegionSP() );
147 virtual
void removeReceiveInteractionCb( RTI::InteractionClassHandle hand,
148 DtReceiveInteractionCb cb,
void* usr, DtDDMRegionSP region = DtDDMRegionSP() );
152 virtual
void addTimeAdvanceGrantCb( DtFedTimeCb cb,
void* usr );
153 virtual
void removeTimeAdvanceGrantCb( DtFedTimeCb cb,
void* usr );
157 virtual
void addTimeRegulationEnabledCb( DtFedTimeCb cb,
void* usr );
158 virtual
void removeTimeRegulationEnabledCb( DtFedTimeCb cb,
void* usr );
162 virtual
void addTimeConstrainedEnabledCb( DtFedTimeCb cb,
void* usr );
163 virtual
void removeTimeConstrainedEnabledCb( DtFedTimeCb cb,
void* usr );
165 virtual
void setRemoveObjectOnAttOutOfScope(
bool remove);
166 virtual
bool removeObjectOnAttOutOfScope() const;
172 virtual
void addFederateSaveCb(const
DtString& label,
173 DtFederateSaveCb func,
void* usr);
174 virtual
void addFederateSaveCb(DtFederateSaveCb func,
177 virtual
void removeFederateSaveCb(const
DtString& label,
178 DtFederateSaveCb func,
void* usr);
179 virtual
void removeFederateSaveCb(DtFederateSaveCb func,
185 virtual
void addFederateRestoreCb(const
DtString& label,
186 DtFederateRestoreCb func,
void* usr);
187 virtual
void addFederateRestoreCb(DtFederateRestoreCb func,
190 virtual
void removeFederateRestoreCb(const
DtString& label,
191 DtFederateRestoreCb func,
void* usr);
192 virtual
void removeFederateRestoreCb(DtFederateRestoreCb func,
196 virtual
bool waitingForSaveOrRestore() const;
205 virtual
void timeAdvanceGrant( const RTI::FedTime& theTime )
206 throw( RTI::InvalidFederationTime,
207 RTI::TimeAdvanceWasNotInProgress,
208 RTI::FederateInternalError );
210 virtual
void timeRegulationEnabled( const RTI::FedTime& theTime )
211 throw( RTI::InvalidFederationTime,
212 RTI::EnableTimeRegulationWasNotPending,
213 RTI::FederateInternalError );
215 virtual
void timeConstrainedEnabled( const RTI::FedTime& theTime )
216 throw( RTI::InvalidFederationTime,
217 RTI::EnableTimeConstrainedWasNotPending,
218 RTI::FederateInternalError );
220 virtual
void startRegistrationForObjectClass(
221 RTI::ObjectClassHandle theClass )
222 throw( RTI::ObjectClassNotPublished,
223 RTI::FederateInternalError );
225 virtual
void stopRegistrationForObjectClass(
226 RTI::ObjectClassHandle theClass )
227 throw( RTI::ObjectClassNotPublished,
228 RTI::FederateInternalError );
230 virtual
void turnInteractionsOn(
231 RTI::InteractionClassHandle theHandle )
232 throw( RTI::InteractionClassNotPublished,
233 RTI::FederateInternalError );
235 virtual
void turnInteractionsOff(
236 RTI::InteractionClassHandle theHandle )
237 throw( RTI::InteractionClassNotPublished,
238 RTI::FederateInternalError );
240 virtual
void discoverObjectInstance(
241 RTI::ObjectHandle theObject,
242 RTI::ObjectClassHandle theObjectClass,
243 const
char* theObjectName )
244 throw( RTI::CouldNotDiscover,
245 RTI::ObjectClassNotKnown,
246 RTI::FederateInternalError );
248 virtual
void reflectAttributeValues(
249 RTI::ObjectHandle theObject,
250 const RTI::AttributeHandleValuePairSet& theAttributes,
251 const RTI::FedTime& theTime,
253 RTI::EventRetractionHandle theHandle )
254 throw( RTI::ObjectNotKnown,
255 RTI::AttributeNotKnown,
256 RTI::FederateOwnsAttributes,
257 RTI::InvalidFederationTime,
258 RTI::FederateInternalError );
260 virtual
void reflectAttributeValues(
261 RTI::ObjectHandle theObject,
262 const RTI::AttributeHandleValuePairSet& theAttributes,
264 throw( RTI::ObjectNotKnown,
265 RTI::AttributeNotKnown,
266 RTI::FederateOwnsAttributes,
267 RTI::FederateInternalError);
269 virtual
void receiveInteraction(
270 RTI::InteractionClassHandle theInteraction,
271 const RTI::ParameterHandleValuePairSet& theParameters,
272 const RTI::FedTime& theTime,
274 RTI::EventRetractionHandle theHandle )
275 throw( RTI::InteractionClassNotKnown,
276 RTI::InteractionParameterNotKnown,
277 RTI::InvalidFederationTime,
278 RTI::FederateInternalError );
280 virtual
void receiveInteraction(
281 RTI::InteractionClassHandle theInteraction,
282 const RTI::ParameterHandleValuePairSet& theParameters,
284 throw( RTI::InteractionClassNotKnown,
285 RTI::InteractionParameterNotKnown,
286 RTI::FederateInternalError );
288 virtual
void removeObjectInstance(
289 RTI::ObjectHandle theObject,
290 const RTI::FedTime& theTime,
292 RTI::EventRetractionHandle theHandle )
293 throw( RTI::ObjectNotKnown,
294 RTI::InvalidFederationTime,
295 RTI::FederateInternalError );
297 virtual
void removeObjectInstance(
298 RTI::ObjectHandle theObject,
300 throw( RTI::ObjectNotKnown,
301 RTI::FederateInternalError );
303 virtual
void attributesInScope (
304 RTI::ObjectHandle theObject,
305 const RTI::AttributeHandleSet& theAttributes)
306 throw ( RTI::ObjectNotKnown,
307 RTI::AttributeNotKnown,
308 RTI::FederateInternalError);
310 virtual
void attributesOutOfScope (
311 RTI::ObjectHandle theObject,
312 const RTI::AttributeHandleSet& theAttributes)
313 throw ( RTI::ObjectNotKnown,
314 RTI::AttributeNotKnown,
315 RTI::FederateInternalError);
318 virtual
void provideAttributeValueUpdate(
319 RTI::ObjectHandle theObject,
320 const RTI::AttributeHandleSet& theAttributes )
321 throw( RTI::ObjectNotKnown,
322 RTI::AttributeNotKnown,
323 RTI::AttributeNotOwned,
324 RTI::FederateInternalError );
326 virtual
void turnUpdatesOnForObjectInstance(
327 RTI::ObjectHandle theObject,
328 const RTI::AttributeHandleSet& theAttributes )
329 throw( RTI::ObjectNotKnown,
330 RTI::AttributeNotOwned,
331 RTI::FederateInternalError );
333 virtual
void turnUpdatesOffForObjectInstance(
334 RTI::ObjectHandle theObject,
335 const RTI::AttributeHandleSet& theAttributes )
336 throw( RTI::ObjectNotKnown,
337 RTI::AttributeNotOwned,
338 RTI::FederateInternalError );
341 virtual
void requestAttributeOwnershipAssumption(
342 RTI::ObjectHandle theObject,
343 const RTI::AttributeHandleSet& offeredAttributes,
345 throw( RTI::ObjectNotKnown,
346 RTI::AttributeNotKnown,
347 RTI::AttributeAlreadyOwned,
348 RTI::AttributeNotPublished,
349 RTI::FederateInternalError );
351 virtual
void attributeOwnershipDivestitureNotification(
352 RTI::ObjectHandle theObject,
353 const RTI::AttributeHandleSet& releasedAttributes )
354 throw( RTI::ObjectNotKnown,
355 RTI::AttributeNotKnown,
356 RTI::AttributeNotOwned,
357 RTI::AttributeDivestitureWasNotRequested,
358 RTI::FederateInternalError );
360 virtual
void attributeOwnershipAcquisitionNotification(
361 RTI::ObjectHandle theObject,
362 const RTI::AttributeHandleSet& securedAttributes )
363 throw( RTI::ObjectNotKnown,
364 RTI::AttributeNotKnown,
365 RTI::AttributeAcquisitionWasNotRequested,
366 RTI::AttributeAlreadyOwned,
367 RTI::AttributeNotPublished,
368 RTI::FederateInternalError );
370 virtual
void attributeOwnershipUnavailable(
371 RTI::ObjectHandle theObject,
372 const RTI::AttributeHandleSet& theAttributes )
373 throw( RTI::ObjectNotKnown,
374 RTI::AttributeNotKnown,
375 RTI::AttributeAlreadyOwned,
376 RTI::AttributeAcquisitionWasNotRequested,
377 RTI::FederateInternalError );
379 virtual
void requestAttributeOwnershipRelease(
380 RTI::ObjectHandle theObject,
381 const RTI::AttributeHandleSet& candidateAttributes,
383 throw( RTI::ObjectNotKnown,
384 RTI::AttributeNotKnown,
385 RTI::AttributeNotOwned,
386 RTI::FederateInternalError );
388 virtual
void confirmAttributeOwnershipAcquisitionCancellation(
389 RTI::ObjectHandle theObject,
390 const RTI::AttributeHandleSet& theAttributes )
391 throw( RTI::ObjectNotKnown,
392 RTI::AttributeNotKnown,
393 RTI::AttributeAlreadyOwned,
394 RTI::AttributeAcquisitionWasNotCanceled,
395 RTI::FederateInternalError );
397 virtual
void informAttributeOwnership(
398 RTI::ObjectHandle theObject,
399 RTI::AttributeHandle theAttribute,
400 RTI::FederateHandle theOwner )
401 throw( RTI::ObjectNotKnown,
402 RTI::AttributeNotKnown,
403 RTI::FederateInternalError );
405 virtual
void attributeIsNotOwned(
406 RTI::ObjectHandle theObject,
407 RTI::AttributeHandle theAttribute )
408 throw( RTI::ObjectNotKnown,
409 RTI::AttributeNotKnown,
410 RTI::FederateInternalError );
412 virtual
void attributeOwnedByRTI(
413 RTI::ObjectHandle theObject,
414 RTI::AttributeHandle theAttribute )
415 throw( RTI::ObjectNotKnown,
416 RTI::AttributeNotKnown,
417 RTI::FederateInternalError);
422 virtual
void initiateFederateSave(
424 throw( RTI::UnableToPerformSave,
425 RTI::FederateInternalError );
427 virtual
void federationSaved()
428 throw( RTI::FederateInternalError);
430 virtual
void federationNotSaved()
431 throw( RTI::FederateInternalError );
437 virtual
void initiateFederateRestore (
439 RTI::FederateHandle handle)
441 RTI::SpecifiedSaveLabelDoesNotExist,
442 RTI::CouldNotRestore,
443 RTI::FederateInternalError);
445 virtual
void federationRestored ()
447 RTI::FederateInternalError);
451 virtual
void synchronizationPointRegistrationSucceeded( const
char* label )
452 throw( RTI::FederateInternalError );
454 virtual
void synchronizationPointRegistrationFailed( const
char* label )
455 throw( RTI::FederateInternalError );
457 virtual
void federationSynchronized( const
char* label )
458 throw( RTI::FederateInternalError );
460 virtual
void announceSynchronizationPoint(
461 const
char* label, const
char* tag )
462 throw( RTI::FederateInternalError );
465 virtual
void addSynchPointRegSucceededCb(const
DtString& label,
466 DtSynchPointCb func,
void* usr);
467 virtual
void addSynchPointRegSucceededCb(DtSynchPointCb func,
470 virtual
void removeSynchPointRegSucceededCb(const
DtString& label,
471 DtSynchPointCb func,
void* usr);
472 virtual
void removeSynchPointRegSucceededCb(DtSynchPointCb func,
475 virtual
void addSynchPointRegFailedCb(const
DtString& label,
476 DtSynchPointCb func,
void* usr);
477 virtual
void addSynchPointRegFailedCb(DtSynchPointCb func,
480 virtual
void removeSynchPointRegFailedCb(const
DtString& label,
481 DtSynchPointCb func,
void* usr);
482 virtual
void removeSynchPointRegFailedCb(DtSynchPointCb func,
485 virtual
void addFederationSynchedCb(const
DtString& label,
486 DtSynchPointCb func,
void* usr);
487 virtual
void addFederationSynchedCb(DtSynchPointCb func,
490 virtual
void removeFederationSynchedCb(const
DtString& label,
491 DtSynchPointCb func,
void* usr);
492 virtual
void removeFederationSynchedCb(DtSynchPointCb func,
495 virtual
void addAnnounceSynchPointCb(const
DtString& label,
496 DtAnnounceSynchPointCb func,
void* usr);
497 virtual
void addAnnounceSynchPointCb(DtAnnounceSynchPointCb func,
500 virtual
void removeAnnounceSynchPointCb(const
DtString& label,
501 DtAnnounceSynchPointCb func,
void* usr);
502 virtual
void removeAnnounceSynchPointCb(DtAnnounceSynchPointCb func,
507 virtual const RTI::Region* getRegionFromAttributes(
508 const RTI::AttributeHandleValuePairSet& theAttributes ) const;
510 virtual const RTI::Region* getRegionFromParameters(
511 const RTI::ParameterHandleValuePairSet& theAttributes ) const;
513 struct DtFederateSaveCbInfo
515 DtFederateSaveCb cbFunction;
519 struct DtFederateRestoreCbInfo
521 DtFederateRestoreCb cbFunction;
525 struct DtLabelledFederateSaveCbInfo
528 DtFederateSaveCb cbFunction;
532 struct DtLabelledFederateRestoreCbInfo
535 DtFederateRestoreCb cbFunction;
539 struct DtGeneralSynchPointCbInfo
541 DtSynchPointCb cbFunction;
545 struct DtLabelledSynchPointCbInfo
548 DtSynchPointCb cbFunction;
552 struct DtGeneralAnnounceCbInfo
554 DtAnnounceSynchPointCb cbFunction;
558 struct DtLabelledAnnounceCbInfo
561 DtAnnounceSynchPointCb cbFunction;
565 static void attributesOutOfScopeCb(
void* usr);
567 virtual void processAttributesOutOfScope(RTI::ObjectHandle handle);
570 DtInteractionManager* myInteractionManager;
571 DtHlaObjectManager* myHlaObjectManager;
573 DtReflectAttributeValuesCbList myRavCbList;
574 DtUpdatesOnCbList myUpdatesOnCbList;
575 DtUpdatesOffCbList myUpdatesOffCbList;
576 DtStartRegCbList myStartRegCbList;
577 DtStopRegCbList myStopRegCbList;
578 DtStartStopInterCbList myStartIntCbList;
579 DtStartStopInterCbList myStopIntCbList;
580 DtFedTimeCbList myTimeAdvanceGrantCbList;
581 DtFedTimeCbList myRegulationEnabledCbList;
582 DtFedTimeCbList myConstrainedEnabledCbList;
585 std::list<DtFederateSaveCbInfo> myFederateSaveCbList;
586 std::list<DtLabelledFederateSaveCbInfo> myLabFederateSaveCbList;
587 std::list<DtFederateRestoreCbInfo> myFederateRestoreCbList;
588 std::list<DtLabelledFederateRestoreCbInfo> myLabFederateRestoreCbList;
590 std::list<DtLabelledSynchPointCbInfo> myLabSynchPtRegSucceededCbList;
591 std::list<DtLabelledSynchPointCbInfo> myLabSynchPtRegFailedCbList;
592 std::list<DtLabelledSynchPointCbInfo> myLabFederationSynchedCbList;
593 std::list<DtLabelledAnnounceCbInfo> myLabAnnounceSynchPointCbList;
595 std::list<DtGeneralSynchPointCbInfo> mySynchPtRegSucceededCbList;
596 std::list<DtGeneralSynchPointCbInfo> mySynchPtRegFailedCbList;
597 std::list<DtGeneralSynchPointCbInfo> myFederationSynchedCbList;
598 std::list<DtGeneralAnnounceCbInfo> myAnnounceSynchPointCbList;
600 bool myRemoveObjectOnAttOutOfScope;
603 virtual void applyFedsSynchedCallbacks(
const char* label);
604 virtual void applyRegistrationSucceededCallbacks(
const char* label);
605 virtual void applyRegistrationFailedCallbacks(
const char* label);
608 virtual bool applyAnnounceCallbacks(
const char* label,
const char* tag);
612 bool myWaitingForSave;
613 bool myWaitingForRestore;
Instances of DtExerciseConn are used to provide an application's interface or connection to the netwo...
Definition: exerciseConnDIS.h:62
#define DT_DLL_VL
Definition: vlMachineTypes.h:108
Instances of DtString are used to represent strings.
Definition: vlString.h:29
This file is used as a convenience to group RTI related callbacks together.