package nl.tudelft.simulation.dsol.hla; import java.util.ArrayList; import java.util.Hashtable; import java.util.List; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import org.djutils.logger.CategoryLogger; import hla.rti.AttributeAcquisitionWasNotCanceled; import hla.rti.AttributeAcquisitionWasNotRequested; import hla.rti.AttributeAlreadyOwned; import hla.rti.AttributeDivestitureWasNotRequested; import hla.rti.AttributeHandleSet; import hla.rti.AttributeNotKnown; import hla.rti.AttributeNotOwned; import hla.rti.AttributeNotPublished; import hla.rti.CouldNotRestore; import hla.rti.EnableTimeConstrainedWasNotPending; import hla.rti.EnableTimeRegulationWasNotPending; import hla.rti.EventNotKnown; import hla.rti.EventRetractionHandle; import hla.rti.FederateAmbassador; import hla.rti.FederateInternalError; import hla.rti.FederateOwnsAttributes; import hla.rti.InteractionClassNotPublished; import hla.rti.InvalidFederationTime; import hla.rti.LogicalTime; import hla.rti.ObjectClassNotPublished; import hla.rti.ObjectNotKnown; import hla.rti.ReceivedInteraction; import hla.rti.ReflectedAttributes; import hla.rti.SpecifiedSaveLabelDoesNotExist; import hla.rti.UnableToPerformSave; import nl.tudelft.simulation.dsol.hla.simulators.HLAInteractionEvent; import nl.tudelft.simulation.event.EventProducer; import nl.tudelft.simulation.event.EventType; import se.pitch.prti.LogicalTimeDouble; /** * The DSOLFederateAmbassador specifies the IEEE-1516 federate. *

* copyright (c) 2004-2018 Delft University of Technology , the * Netherlands.
* See for project information www.simulation.tudelft.nl/dsol
* License of use: General Public License (GPL) , no warranty
* @author Peter Jacobs * @since 1.2 */ public class DSOLFederateAmbassador extends EventProducer implements FederateAmbassador { /** the TIME_ADVANCE_GRANT_EVENT */ public static final EventType TIME_ADVANCE_GRANT_EVENT = new EventType("TIME_ADVANCE_GRANT_EVENT"); /** TIME_CONSTRAINED_ENABLED_EVENT */ public static final EventType TIME_CONSTRAINED_ENABLED_EVENT = new EventType("TIME_CONSTRAINED_ENABLED_EVENT"); /** TIME_REGULATION_ENABLED_EVENT */ public static final EventType TIME_REGULATION_ENABLED_EVENT = new EventType("TIME_REGULATION_ENABLED_EVENT"); /** Published on interaction reception. Value: HLAInteractionEvent. */ public static final EventType INTERACTION_REC_EVENT = new EventType("INTERACTION_REC_EVENT"); /** the READY_TO_POPULATe. */ public static final String READY_TO_POPULATE = "READY_TO_POPULATE"; /** the READY_TO_RUN */ public static final String READY_TO_RUN = "READY_TO_RUN"; /** the READY_TO_RESIGN */ public static final String READY_TO_RESIGN = "READY_TO_RESIGN"; /** the context to use for object sharing. */ protected Context context = null; /** to be set after a federation has been joined by this federate. */ protected int federateHandle = -1; /** a list of premature synchronization points. */ protected List synchronizationPoints = new ArrayList(); /** * constructs a new DSOLFederateAmbassador */ public DSOLFederateAmbassador() { this(null); } /** * constructs a new DSOLFederateAmbassador * @param environment Hashtable; the environment of the context */ public DSOLFederateAmbassador(final Hashtable environment) { super(); try { if (environment != null) { this.context = new InitialContext(environment); } else { this.context = new InitialContext(); } } catch (NamingException namingException) { CategoryLogger.always().error("", namingException); } } /** * Returns the federatehandle, or -1 if not joined. */ public int getFederateHandle() { return federateHandle; } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#turnInteractionsOn(int) */ public void turnInteractionsOn(int theHandle) throws InteractionClassNotPublished, FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#requestAttributeOwnershipRelease(int, hla.rti.AttributeHandleSet, byte[]) */ public void requestAttributeOwnershipRelease(int theObject, AttributeHandleSet candidateAttributes, byte[] userSuppliedTag) throws ObjectNotKnown, AttributeNotKnown, AttributeNotOwned, FederateInternalError { // TODO Auto-generated method stub } /** {@inheritDoc} */ @Override public void announceSynchronizationPoint(String synchronizationPointLabel, byte[] userSuppliedTag) throws FederateInternalError { Logger.info(this, "announceSynchronizationPoint", synchronizationPointLabel); } /** {@inheritDoc} */ @Override public void synchronizationPointRegistrationSucceeded(String synchronizationPointLabel) { Logger.info(this, "synchronizationPointRegistrationSucceeded", synchronizationPointLabel); } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#attributeIsNotOwned(int, int) */ public void attributeIsNotOwned(int theObject, int theAttribute) { // TODO Auto-generated method stub } /** {@inheritDoc} */ @Override public void federationSynchronized(String synchronizationPointLabel) { Logger.info(this, "federationSynchronized", synchronizationPointLabel); } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#turnInteractionsOff(int) */ public void turnInteractionsOff(int theHandle) throws InteractionClassNotPublished, FederateInternalError { // TODO Auto-generated method stub } /** {@inheritDoc} */ @Override public void receiveInteraction(int interactionClass, ReceivedInteraction theInteraction, byte[] userSuppliedTag) { Logger.warning(this, "receiveInteraction", "Receiving interaction at NO time"); super.fireEvent(INTERACTION_REC_EVENT, new HLAInteractionEvent(interactionClass, theInteraction, null)); } /** {@inheritDoc} */ @Override public void receiveInteraction(int interactionClass, ReceivedInteraction theInteraction, byte[] userSuppliedTag, LogicalTime theTime, EventRetractionHandle eventRetractionHandle) { Logger.info(this, "receiveInteraction", "Receiving interaction at " + theTime.toString()); super.fireEvent(INTERACTION_REC_EVENT, new HLAInteractionEvent(interactionClass, theInteraction, theTime)); } /** {@inheritDoc} */ @Override public void requestAttributeOwnershipAssumption(int theObject, AttributeHandleSet offeredAttributes, byte[] userSuppliedTag) throws ObjectNotKnown, AttributeNotKnown, AttributeAlreadyOwned, AttributeNotPublished, FederateInternalError { // TODO Auto-generated method stub } /** {@inheritDoc} */ @Override public void confirmAttributeOwnershipAcquisitionCancellation(int theObject, AttributeHandleSet theAttributes) throws ObjectNotKnown, AttributeNotKnown, AttributeAlreadyOwned, AttributeAcquisitionWasNotCanceled, FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#provideAttributeValueUpdate(int, hla.rti.AttributeHandleSet) */ public void provideAttributeValueUpdate(int theObject, AttributeHandleSet theAttributes) throws ObjectNotKnown, AttributeNotKnown, AttributeNotOwned, FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#federationRestored() */ public void federationRestored() throws FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#informAttributeOwnership(int, int, int) */ public void informAttributeOwnership(int theObject, int theAttribute, int theOwner) throws ObjectNotKnown, AttributeNotKnown, FederateInternalError { // TODO Auto-generated method stub } /** {@inheritDoc} */ @Override public void timeAdvanceGrant(LogicalTime theTime) { Logger.info(this, "timeAdvanceGrant", theTime.toString()); super.fireEvent(DSOLFederateAmbassador.TIME_ADVANCE_GRANT_EVENT, ((LogicalTimeDouble) theTime).getValue()); } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#initiateFederateSave(java.lang.String) */ public void initiateFederateSave(String label) throws UnableToPerformSave, FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#attributeOwnershipUnavailable(int, hla.rti.AttributeHandleSet) */ public void attributeOwnershipUnavailable(int theObject, AttributeHandleSet theAttributes) throws ObjectNotKnown, AttributeNotKnown, AttributeAlreadyOwned, AttributeAcquisitionWasNotRequested, FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#attributeOwnedByRTI(int, int) */ public void attributeOwnedByRTI(int theObject, int theAttribute) throws ObjectNotKnown, AttributeNotKnown, FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#reflectAttributeValues(int, hla.rti.ReflectedAttributes, byte[]) */ public void reflectAttributeValues(int theObject, ReflectedAttributes theAttributes, byte[] userSuppliedTag) throws ObjectNotKnown, AttributeNotKnown, FederateOwnsAttributes, FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#reflectAttributeValues(int, hla.rti.ReflectedAttributes, byte[], * hla.rti.LogicalTime, hla.rti.EventRetractionHandle) */ public void reflectAttributeValues(int theObject, ReflectedAttributes theAttributes, byte[] userSuppliedTag, LogicalTime theTime, EventRetractionHandle retractionHandle) throws ObjectNotKnown, AttributeNotKnown, FederateOwnsAttributes, InvalidFederationTime, FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#federationRestoreBegun() */ public void federationRestoreBegun() throws FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#requestFederationRestoreSucceeded(java.lang.String) */ public void requestFederationRestoreSucceeded(String label) throws FederateInternalError { // TODO Auto-generated method stub } /** {@inheritDoc} */ @Override public void discoverObjectInstance(int theObject, int theObjectClass, String objectName) { Logger.info(this, "discoverObjectInstance", "object=" + theObject + " class=" + theObjectClass + " name=" + objectName); } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#attributeOwnershipAcquisitionNotification(int, hla.rti.AttributeHandleSet) */ public void attributeOwnershipAcquisitionNotification(int theObject, AttributeHandleSet securedAttributes) throws ObjectNotKnown, AttributeNotKnown, AttributeAcquisitionWasNotRequested, AttributeAlreadyOwned, AttributeNotPublished, FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#federationNotSaved() */ public void federationNotSaved() throws FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#requestFederationRestoreFailed(java.lang.String, java.lang.String) */ public void requestFederationRestoreFailed(String label, String reason) throws FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#timeConstrainedEnabled(hla.rti.LogicalTime) */ public void timeConstrainedEnabled(LogicalTime theFederateTime) throws InvalidFederationTime, EnableTimeConstrainedWasNotPending, FederateInternalError { Logger.info(this, "timeConstrainedEnabled", theFederateTime.toString()); } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#synchronizationPointRegistrationFailed(java.lang.String) */ public void synchronizationPointRegistrationFailed(String synchronizationPointLabel) throws FederateInternalError { Logger.info(this, "synchronizationPointRegistrationFailed", synchronizationPointLabel); } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#initiateFederateRestore(java.lang.String, int) */ public void initiateFederateRestore(String label, int federateHandle) throws SpecifiedSaveLabelDoesNotExist, CouldNotRestore, FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#attributesInScope(int, hla.rti.AttributeHandleSet) */ public void attributesInScope(int theObject, AttributeHandleSet theAttributes) throws ObjectNotKnown, AttributeNotKnown, FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#attributesOutOfScope(int, hla.rti.AttributeHandleSet) */ public void attributesOutOfScope(int theObject, AttributeHandleSet theAttributes) throws ObjectNotKnown, AttributeNotKnown, FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#removeObjectInstance(int, byte[]) */ public void removeObjectInstance(int theObject, byte[] userSuppliedTag) throws ObjectNotKnown, FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#removeObjectInstance(int, byte[], hla.rti.LogicalTime, * hla.rti.EventRetractionHandle) */ public void removeObjectInstance(int theObject, byte[] userSuppliedTag, LogicalTime theTime, EventRetractionHandle retractionHandle) throws ObjectNotKnown, InvalidFederationTime, FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#turnUpdatesOffForObjectInstance(int, hla.rti.AttributeHandleSet) */ public void turnUpdatesOffForObjectInstance(int theObject, AttributeHandleSet theAttributes) throws ObjectNotKnown, AttributeNotOwned, FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#attributeOwnershipDivestitureNotification(int, hla.rti.AttributeHandleSet) */ public void attributeOwnershipDivestitureNotification(int theObject, AttributeHandleSet releasedAttributes) throws ObjectNotKnown, AttributeNotKnown, AttributeNotOwned, AttributeDivestitureWasNotRequested, FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#requestRetraction(hla.rti.EventRetractionHandle) */ public void requestRetraction(EventRetractionHandle theHandle) throws EventNotKnown, FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#federationSaved() */ public void federationSaved() throws FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#federationNotRestored() */ public void federationNotRestored() throws FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#timeRegulationEnabled(hla.rti.LogicalTime) */ public void timeRegulationEnabled(LogicalTime theFederateTime) throws InvalidFederationTime, EnableTimeRegulationWasNotPending, FederateInternalError { Logger.info(this, "timeRegulationEnabled", theFederateTime.toString()); } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#startRegistrationForObjectClass(int) */ public void startRegistrationForObjectClass(int theClass) throws ObjectClassNotPublished, FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#stopRegistrationForObjectClass(int) */ public void stopRegistrationForObjectClass(int theClass) throws ObjectClassNotPublished, FederateInternalError { // TODO Auto-generated method stub } /* * (non-Javadoc) * @see hla.rti.FederateAmbassador#turnUpdatesOnForObjectInstance(int, hla.rti.AttributeHandleSet) */ public void turnUpdatesOnForObjectInstance(int theObject, AttributeHandleSet theAttributes) throws ObjectNotKnown, AttributeNotOwned, FederateInternalError { // TODO Auto-generated method stub } }