[ohla-devel] SF.net SVN: ohla: [28] trunk
Status: Beta
Brought to you by:
mnewcomb
From: <mne...@us...> - 2006-11-15 23:17:58
|
Revision: 28 http://svn.sourceforge.net/ohla/?rev=28&view=rev Author: mnewcomb Date: 2006-11-15 15:17:58 -0800 (Wed, 15 Nov 2006) Log Message: ----------- more time management support Modified Paths: -------------- trunk/resources/testsuite/ieee-1516-testng.xml trunk/rti/src/java/net/sf/ohla/rti1516/federate/Federate.java trunk/rti/src/java/net/sf/ohla/rti1516/federate/time/TimeManager.java trunk/testsuite/src/java/net/sf/ohla/rti1516/TimeManagementTestNG.java Modified: trunk/resources/testsuite/ieee-1516-testng.xml =================================================================== --- trunk/resources/testsuite/ieee-1516-testng.xml 2006-11-15 01:32:16 UTC (rev 27) +++ trunk/resources/testsuite/ieee-1516-testng.xml 2006-11-15 23:17:58 UTC (rev 28) @@ -46,6 +46,12 @@ </classes> </test> + <test name="IEEE 1516 - Time Management"> + <classes> + <class name="net.sf.ohla.rti1516.TimeManagementTestNG"/> + </classes> + </test> + <test name="IEEE 1516 - Data Distribution Management"> <classes> <class name="net.sf.ohla.rti1516.DataDistributionManagementTestNG"/> Modified: trunk/rti/src/java/net/sf/ohla/rti1516/federate/Federate.java =================================================================== --- trunk/rti/src/java/net/sf/ohla/rti1516/federate/Federate.java 2006-11-15 01:32:16 UTC (rev 27) +++ trunk/rti/src/java/net/sf/ohla/rti1516/federate/Federate.java 2006-11-15 23:17:58 UTC (rev 28) @@ -61,6 +61,7 @@ import net.sf.ohla.rti1516.federate.callbacks.ReflectAttributeValues; import net.sf.ohla.rti1516.federate.callbacks.SynchronizationPointRegistrationFailed; import net.sf.ohla.rti1516.federate.callbacks.SynchronizationPointRegistrationSucceeded; +import net.sf.ohla.rti1516.federate.callbacks.RemoveObjectInstance; import net.sf.ohla.rti1516.federate.filter.InterestManagementFilter; import net.sf.ohla.rti1516.federate.objects.ObjectManager; import net.sf.ohla.rti1516.federate.time.TimeManager; @@ -576,9 +577,25 @@ { } - boolean hold = timeManager.isTimeConstrainedAndTimeGranted() && - !isAsynchronousDeliveryEnabled(); + boolean hold = false; + if (message instanceof ReflectAttributeValues || + message instanceof ReceiveInteraction || + message instanceof RemoveObjectInstance) + { + timeManager.getTimeLock().readLock().lock(); + try + { + hold = !isAsynchronousDeliveryEnabled() && + timeManager.isTimeConstrainedAndTimeGranted(); + + } + finally + { + timeManager.getTimeLock().readLock().unlock(); + } + } + callbackManager.add((Callback) message, hold); } else if (message instanceof ObjectInstanceNameReserved) @@ -3570,19 +3587,22 @@ protected class FederateAmbassadorInterceptor extends NullFederateAmbassador { + @Override public void synchronizationPointRegistrationSucceeded(String label) throws FederateInternalError { federateAmbassador.synchronizationPointRegistrationSucceeded(label); } - public void synchronizationPointRegistrationFailed(String label, - SynchronizationPointFailureReason reason) + @Override + public void synchronizationPointRegistrationFailed( + String label, SynchronizationPointFailureReason reason) throws FederateInternalError { federateAmbassador.synchronizationPointRegistrationFailed(label, reason); } + @Override public void announceSynchronizationPoint(String label, byte[] tag) throws FederateInternalError { @@ -3609,6 +3629,7 @@ federateAmbassador.announceSynchronizationPoint(label, tag); } + @Override public void federationSynchronized(String label) throws FederateInternalError { @@ -3633,6 +3654,7 @@ federateAmbassador.federationSynchronized(label); } + @Override public void initiateFederateSave(String label) throws UnableToPerformSave, FederateInternalError { @@ -3668,6 +3690,7 @@ } } + @Override public void initiateFederateSave(String label, LogicalTime saveTime) throws InvalidLogicalTime, UnableToPerformSave, FederateInternalError { @@ -3703,6 +3726,7 @@ } } + @Override public void federationSaved() throws FederateInternalError { @@ -3721,6 +3745,7 @@ } } + @Override public void federationNotSaved(SaveFailureReason reason) throws FederateInternalError { @@ -3739,6 +3764,7 @@ } } + @Override public void federationSaveStatusResponse( FederateHandleSaveStatusPair[] response) throws FederateInternalError @@ -3746,24 +3772,28 @@ federateAmbassador.federationSaveStatusResponse(response); } + @Override public void requestFederationRestoreSucceeded(String label) throws FederateInternalError { federateAmbassador.requestFederationRestoreSucceeded(label); } + @Override public void requestFederationRestoreFailed(String label) throws FederateInternalError { federateAmbassador.requestFederationRestoreFailed(label); } + @Override public void federationRestoreBegun() throws FederateInternalError { federateAmbassador.federationRestoreBegun(); } + @Override public void initiateFederateRestore(String label, FederateHandle federateHandle) throws SpecifiedSaveLabelDoesNotExist, CouldNotInitiateRestore, @@ -3772,18 +3802,21 @@ federateAmbassador.initiateFederateRestore(label, federateHandle); } + @Override public void federationRestored() throws FederateInternalError { federateAmbassador.federationRestored(); } + @Override public void federationNotRestored(RestoreFailureReason reason) throws FederateInternalError { federateAmbassador.federationNotRestored(reason); } + @Override public void federationRestoreStatusResponse( FederateHandleRestoreStatusPair[] response) throws FederateInternalError @@ -3791,6 +3824,7 @@ federateAmbassador.federationRestoreStatusResponse(response); } + @Override public void startRegistrationForObjectClass( ObjectClassHandle objectClassHandle) throws ObjectClassNotPublished, FederateInternalError @@ -3798,6 +3832,7 @@ federateAmbassador.startRegistrationForObjectClass(objectClassHandle); } + @Override public void stopRegistrationForObjectClass( ObjectClassHandle objectClassHandle) throws ObjectClassNotPublished, FederateInternalError @@ -3805,12 +3840,14 @@ federateAmbassador.stopRegistrationForObjectClass(objectClassHandle); } + @Override public void turnInteractionsOn(InteractionClassHandle interactionClassHandle) throws InteractionClassNotPublished, FederateInternalError { federateAmbassador.turnInteractionsOn(interactionClassHandle); } + @Override public void turnInteractionsOff( InteractionClassHandle interactionClassHandle) throws InteractionClassNotPublished, FederateInternalError @@ -3818,18 +3855,21 @@ federateAmbassador.turnInteractionsOff(interactionClassHandle); } + @Override public void objectInstanceNameReservationSucceeded(String name) throws UnknownName, FederateInternalError { federateAmbassador.objectInstanceNameReservationSucceeded(name); } + @Override public void objectInstanceNameReservationFailed(String name) throws UnknownName, FederateInternalError { federateAmbassador.objectInstanceNameReservationFailed(name); } + @Override public void discoverObjectInstance( ObjectInstanceHandle objectInstanceHandle, ObjectClassHandle objectClassHandle, String name) @@ -3839,6 +3879,7 @@ objectInstanceHandle, objectClassHandle, name, federateAmbassador); } + @Override public void reflectAttributeValues( ObjectInstanceHandle objectInstanceHandle, AttributeHandleValueMap attributeValues, byte[] tag, @@ -3851,6 +3892,7 @@ transportationType, null, null, null, null, federateAmbassador); } + @Override public void reflectAttributeValues( ObjectInstanceHandle objectInstanceHandle, AttributeHandleValueMap attributeValues, byte[] tag, @@ -3865,6 +3907,7 @@ federateAmbassador); } + @Override public void reflectAttributeValues( ObjectInstanceHandle objectInstanceHandle, AttributeHandleValueMap attributeValues, byte[] tag, @@ -3879,6 +3922,7 @@ federateAmbassador); } + @Override public void reflectAttributeValues( ObjectInstanceHandle objectInstanceHandle, AttributeHandleValueMap attributeValues, byte[] tag, @@ -3894,6 +3938,7 @@ federateAmbassador); } + @Override public void reflectAttributeValues( ObjectInstanceHandle objectInstanceHandle, AttributeHandleValueMap attributeValues, byte[] tag, OrderType sentOrderType, @@ -3909,6 +3954,7 @@ messageRetractionHandle, null, federateAmbassador); } + @Override public void reflectAttributeValues( ObjectInstanceHandle objectInstanceHandle, AttributeHandleValueMap attributeValues, byte[] tag, OrderType sentOrderType, @@ -3925,6 +3971,7 @@ messageRetractionHandle, regionHandles, federateAmbassador); } + @Override public void receiveInteraction( InteractionClassHandle interactionClassHandle, ParameterHandleValueMap parameterValues, byte[] tag, @@ -3937,6 +3984,7 @@ transportationType, null, null, null, null, federateAmbassador); } + @Override public void receiveInteraction( InteractionClassHandle interactionClassHandle, ParameterHandleValueMap parameterValues, byte[] tag, @@ -3951,6 +3999,7 @@ federateAmbassador); } + @Override public void receiveInteraction( InteractionClassHandle interactionClassHandle, ParameterHandleValueMap parameterValues, byte[] tag, @@ -3965,6 +4014,7 @@ federateAmbassador); } + @Override public void receiveInteraction( InteractionClassHandle interactionClassHandle, ParameterHandleValueMap parameterValues, byte[] tag, @@ -3980,6 +4030,7 @@ federateAmbassador); } + @Override public void receiveInteraction( InteractionClassHandle interactionClassHandle, ParameterHandleValueMap parameterValues, byte[] tag, @@ -3996,6 +4047,7 @@ messageRetractionHandle, null, federateAmbassador); } + @Override public void receiveInteraction( InteractionClassHandle interactionClassHandle, ParameterHandleValueMap parameterValues, byte[] tag, @@ -4013,6 +4065,7 @@ messageRetractionHandle, regionHandles, federateAmbassador); } + @Override public void removeObjectInstance(ObjectInstanceHandle objectInstanceHandle, byte[] tag, OrderType sentOrderType) throws ObjectInstanceNotKnown, FederateInternalError @@ -4022,6 +4075,7 @@ federateAmbassador); } + @Override public void removeObjectInstance(ObjectInstanceHandle objectInstanceHandle, byte[] tag, OrderType sentOrderType, LogicalTime deleteTime, @@ -4033,6 +4087,7 @@ null, federateAmbassador); } + @Override public void removeObjectInstance(ObjectInstanceHandle objectInstanceHandle, byte[] tag, OrderType sentOrderType, LogicalTime deleteTime, @@ -4045,6 +4100,7 @@ messageRetractionHandle, federateAmbassador); } + @Override public void attributesInScope(ObjectInstanceHandle objectInstanceHandle, AttributeHandleSet attributeHandles) throws ObjectInstanceNotKnown, AttributeNotRecognized, @@ -4054,6 +4110,7 @@ objectInstanceHandle, attributeHandles); } + @Override public void attributesOutOfScope(ObjectInstanceHandle objectInstanceHandle, AttributeHandleSet attributeHandles) throws ObjectInstanceNotKnown, AttributeNotRecognized, @@ -4063,6 +4120,7 @@ objectInstanceHandle, attributeHandles); } + @Override public void provideAttributeValueUpdate( ObjectInstanceHandle objectInstanceHandle, AttributeHandleSet attributeHandles, byte[] tag) @@ -4073,6 +4131,7 @@ objectInstanceHandle, attributeHandles, tag); } + @Override public void turnUpdatesOnForObjectInstance( ObjectInstanceHandle objectInstanceHandle, AttributeHandleSet attributeHandles) @@ -4083,6 +4142,7 @@ objectInstanceHandle, attributeHandles); } + @Override public void turnUpdatesOffForObjectInstance( ObjectInstanceHandle objectInstanceHandle, AttributeHandleSet attributeHandles) @@ -4093,6 +4153,7 @@ objectInstanceHandle, attributeHandles); } + @Override public void requestAttributeOwnershipAssumption( ObjectInstanceHandle objectInstanceHandle, AttributeHandleSet attributeHandles, byte[] tag) @@ -4103,6 +4164,7 @@ objectInstanceHandle, attributeHandles, tag); } + @Override public void requestDivestitureConfirmation( ObjectInstanceHandle objectInstanceHandle, AttributeHandleSet attributeHandles) @@ -4113,6 +4175,7 @@ objectInstanceHandle, attributeHandles); } + @Override public void attributeOwnershipAcquisitionNotification( ObjectInstanceHandle objectInstanceHandle, AttributeHandleSet attributeHandles, byte[] tag) @@ -4124,6 +4187,7 @@ objectInstanceHandle, attributeHandles, tag, federateAmbassador); } + @Override public void attributeOwnershipUnavailable( ObjectInstanceHandle objectInstanceHandle, AttributeHandleSet attributeHandles) @@ -4135,6 +4199,7 @@ objectInstanceHandle, attributeHandles); } + @Override public void requestAttributeOwnershipRelease( ObjectInstanceHandle objectInstanceHandle, AttributeHandleSet attributeHandles, byte[] tag) @@ -4145,6 +4210,7 @@ objectInstanceHandle, attributeHandles, tag); } + @Override public void confirmAttributeOwnershipAcquisitionCancellation( ObjectInstanceHandle objectInstanceHandle, AttributeHandleSet attributeHandles) @@ -4156,6 +4222,7 @@ objectInstanceHandle, attributeHandles); } + @Override public void informAttributeOwnership( ObjectInstanceHandle objectInstanceHandle, AttributeHandle attributeHandle, FederateHandle federateHandle) @@ -4165,6 +4232,7 @@ objectInstanceHandle, attributeHandle, federateHandle); } + @Override public void attributeIsNotOwned(ObjectInstanceHandle objectInstanceHandle, AttributeHandle attributeHandle) throws ObjectInstanceNotKnown, AttributeNotRecognized, FederateInternalError @@ -4173,6 +4241,7 @@ objectInstanceHandle, attributeHandle); } + @Override public void attributeIsOwnedByRTI(ObjectInstanceHandle objectInstanceHandle, AttributeHandle attributeHandle) throws ObjectInstanceNotKnown, AttributeNotRecognized, FederateInternalError @@ -4181,6 +4250,7 @@ objectInstanceHandle, attributeHandle); } + @Override public void timeRegulationEnabled(LogicalTime time) throws InvalidLogicalTime, NoRequestToEnableTimeRegulationWasPending, FederateInternalError @@ -4188,6 +4258,7 @@ timeManager.timeRegulationEnabled(time, federateAmbassador); } + @Override public void timeConstrainedEnabled(LogicalTime time) throws InvalidLogicalTime, NoRequestToEnableTimeConstrainedWasPending, FederateInternalError @@ -4195,6 +4266,7 @@ timeManager.timeConstrainedEnabled(time, federateAmbassador); } + @Override public void timeAdvanceGrant(LogicalTime time) throws InvalidLogicalTime, JoinedFederateIsNotInTimeAdvancingState, FederateInternalError @@ -4202,6 +4274,7 @@ timeManager.timeAdvanceGrant(time, federateAmbassador); } + @Override public void requestRetraction(MessageRetractionHandle messageRetractionHandle) throws FederateInternalError { Modified: trunk/rti/src/java/net/sf/ohla/rti1516/federate/time/TimeManager.java =================================================================== --- trunk/rti/src/java/net/sf/ohla/rti1516/federate/time/TimeManager.java 2006-11-15 01:32:16 UTC (rev 27) +++ trunk/rti/src/java/net/sf/ohla/rti1516/federate/time/TimeManager.java 2006-11-15 23:17:58 UTC (rev 28) @@ -548,6 +548,8 @@ { federateTime = time; + timeRegulatingState = TimeRegulatingState.TIME_REGULATING; + federateAmbassador.timeRegulationEnabled(time); } catch (Throwable t) @@ -569,6 +571,8 @@ { federateTime = time; + timeConstrainedState = TimeConstrainedState.TIME_CONSTRAINED; + federateAmbassador.timeConstrainedEnabled(time); } catch (Throwable t) Modified: trunk/testsuite/src/java/net/sf/ohla/rti1516/TimeManagementTestNG.java =================================================================== --- trunk/testsuite/src/java/net/sf/ohla/rti1516/TimeManagementTestNG.java 2006-11-15 01:32:16 UTC (rev 27) +++ trunk/testsuite/src/java/net/sf/ohla/rti1516/TimeManagementTestNG.java 2006-11-15 23:17:58 UTC (rev 28) @@ -16,14 +16,250 @@ package net.sf.ohla.rti1516; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import java.util.List; +import java.util.ArrayList; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +import hla.rti1516.ResignAction; +import hla.rti1516.LogicalTimeInterval; +import hla.rti1516.RTIambassador; import hla.rti1516.LogicalTime; -import hla.rti1516.IllegalTimeArithmetic; +import hla.rti1516.InvalidLogicalTime; +import hla.rti1516.NoRequestToEnableTimeRegulationWasPending; +import hla.rti1516.FederateInternalError; +import hla.rti1516.NoRequestToEnableTimeConstrainedWasPending; +import hla.rti1516.TimeRegulationAlreadyEnabled; +import hla.rti1516.TimeConstrainedAlreadyEnabled; +import hla.rti1516.TimeRegulationIsNotEnabled; +import hla.rti1516.TimeConstrainedIsNotEnabled; +import hla.rti1516.RequestForTimeConstrainedPending; +import hla.rti1516.RequestForTimeRegulationPending; +import hla.rti1516.InvalidLookahead; +import hla.rti1516.jlc.NullFederateAmbassador; public class TimeManagementTestNG + extends BaseTestNG { + protected List<TestFederateAmbassador> federateAmbassadors = + new ArrayList<TestFederateAmbassador>(3); + + protected LogicalTimeInterval lookahead1 = new Integer64TimeInterval(1); + protected LogicalTimeInterval lookahead2 = new Integer64TimeInterval(2); + + public TimeManagementTestNG() + { + super(2); + } + + @BeforeClass + public void setup() + throws Exception + { + rtiAmbassadors.get(0).createFederationExecution(FEDERATION_NAME, fdd); + + federateAmbassadors.add(new TestFederateAmbassador(rtiAmbassadors.get(0))); + federateAmbassadors.add(new TestFederateAmbassador(rtiAmbassadors.get(1))); + + rtiAmbassadors.get(0).joinFederationExecution( + FEDERATE_TYPE, FEDERATION_NAME, federateAmbassadors.get(0), + mobileFederateServices); + rtiAmbassadors.get(1).joinFederationExecution( + FEDERATE_TYPE + "2", FEDERATION_NAME, federateAmbassadors.get(1), + mobileFederateServices); + } + + @AfterClass + public void teardown() + throws Exception + { + rtiAmbassadors.get(0).resignFederationExecution(ResignAction.NO_ACTION); + rtiAmbassadors.get(1).resignFederationExecution(ResignAction.NO_ACTION); + + rtiAmbassadors.get(0).destroyFederationExecution(FEDERATION_NAME); + } + + @Test + public void testEnableTimeRegulation() + throws Exception + { + rtiAmbassadors.get(0).enableTimeRegulation(lookahead1); + federateAmbassadors.get(0).checkTimeRegulationEnabled(); + + rtiAmbassadors.get(1).enableTimeRegulation(lookahead2); + federateAmbassadors.get(1).checkTimeRegulationEnabled(); + } + + @Test(dependsOnMethods = {"testEnableTimeRegulation"}, + expectedExceptions = {TimeRegulationAlreadyEnabled.class}) + public void testEnableTimeRegulationAgain() + throws Exception + { + rtiAmbassadors.get(0).enableTimeRegulation(lookahead1); + } + + @Test(dependsOnMethods = {"testEnableTimeRegulationAgain"}) + public void testQueryLookahead() + throws Exception + { + assert lookahead1.equals(rtiAmbassadors.get(0).queryLookahead()); + } + + @Test(dependsOnMethods = {"testQueryLookahead"}) + public void testModifyLookahead() + throws Exception + { + rtiAmbassadors.get(0).modifyLookahead(lookahead2); + assert lookahead2.equals(rtiAmbassadors.get(0).queryLookahead()); + } + + @Test(dependsOnMethods = {"testModifyLookahead"}) + public void testDisableTimeRegulation() + throws Exception + { + rtiAmbassadors.get(0).disableTimeRegulation(); + } + + @Test(dependsOnMethods = {"testDisableTimeRegulation"}, + expectedExceptions = {TimeRegulationIsNotEnabled.class}) + public void testDisableTimeRegulationAgain() + throws Exception + { + rtiAmbassadors.get(0).disableTimeRegulation(); + } + + @Test(dependsOnMethods = {"testDisableTimeRegulationAgain"}, + expectedExceptions = {RequestForTimeRegulationPending.class}) + public void testEnableTimeRegulationWhileEnableTimeRegulationPending() + throws Exception + { + rtiAmbassadors.get(0).enableTimeRegulation(lookahead1); + + try + { + rtiAmbassadors.get(0).enableTimeRegulation(lookahead1); + } + finally + { + federateAmbassadors.get(0).checkTimeRegulationEnabled(); + rtiAmbassadors.get(0).disableTimeRegulation(); + } + } + + @Test(dependsOnMethods = {"testEnableTimeRegulationWhileEnableTimeRegulationPending"}, + expectedExceptions = {InvalidLookahead.class}) + public void testEnableTimeRegulationOfInvalidLookahead() + throws Exception + { + rtiAmbassadors.get(0).enableTimeRegulation(null); + } + + @Test + public void testEnableTimeConstrained() + throws Exception + { + rtiAmbassadors.get(0).enableTimeConstrained(); + federateAmbassadors.get(0).checkTimeConstrainedEnabled(); + + rtiAmbassadors.get(1).enableTimeConstrained(); + federateAmbassadors.get(1).checkTimeConstrainedEnabled(); + } + + @Test(dependsOnMethods = {"testEnableTimeConstrained"}, + expectedExceptions = {TimeConstrainedAlreadyEnabled.class}) + public void testEnableTimeConstrainedAgain() + throws Exception + { + rtiAmbassadors.get(0).enableTimeConstrained(); + } + + @Test(dependsOnMethods = {"testEnableTimeConstrainedAgain"}) + public void testDisableTimeConstrained() + throws Exception + { + rtiAmbassadors.get(0).disableTimeConstrained(); + } + + @Test(dependsOnMethods = {"testDisableTimeConstrained"}, + expectedExceptions = {TimeConstrainedIsNotEnabled.class}) + public void testDisableTimeConstrainedAgain() + throws Exception + { + rtiAmbassadors.get(0).disableTimeConstrained(); + } + + @Test(dependsOnMethods = {"testDisableTimeConstrainedAgain"}, + expectedExceptions = {RequestForTimeConstrainedPending.class}) + public void testEnableTimeConstrainedWhileEnableTimeConstrainedPending() + throws Exception + { + rtiAmbassadors.get(0).enableTimeConstrained(); + + try + { + rtiAmbassadors.get(0).enableTimeConstrained(); + } + finally + { + federateAmbassadors.get(0).checkTimeConstrainedEnabled(); + rtiAmbassadors.get(0).disableTimeConstrained(); + } + } + + protected static class TestFederateAmbassador + extends NullFederateAmbassador + { + protected RTIambassador rtiAmbassador; + + protected LogicalTime timeRegulationEnabledTime; + protected LogicalTime timeConstrainedEnabledTime; + + public TestFederateAmbassador(RTIambassador rtiAmbassador) + { + this.rtiAmbassador = rtiAmbassador; + } + + public void checkTimeRegulationEnabled() + throws Exception + { + timeRegulationEnabledTime = null; + for (int i = 0; i < 5 && timeRegulationEnabledTime == null; i++) + { + rtiAmbassador.evokeMultipleCallbacks(.1, 1.0); + } + assert timeRegulationEnabledTime != null; + } + + public void checkTimeConstrainedEnabled() + throws Exception + { + timeConstrainedEnabledTime = null; + for (int i = 0; i < 5 && timeConstrainedEnabledTime == null; i++) + { + rtiAmbassador.evokeMultipleCallbacks(.1, 1.0); + } + assert timeConstrainedEnabledTime != null; + } + + @Override + public void timeRegulationEnabled(LogicalTime time) + throws InvalidLogicalTime, NoRequestToEnableTimeRegulationWasPending, + FederateInternalError + { + timeRegulationEnabledTime = time; + } + + @Override + public void timeConstrainedEnabled(LogicalTime time) + throws InvalidLogicalTime, NoRequestToEnableTimeConstrainedWasPending, + FederateInternalError + { + timeConstrainedEnabledTime = time; + } + } + // public void test() // { // TimeClient tc = new TimeClient("A", new Integer64TimeInterval(3000), false); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |