/// <summary>Ctor. </summary> /// <param name="isolatedServiceName">name of the isolated service</param> /// <param name="services">isolated services</param> /// <param name="unisolatedServices">engine services</param> /// <param name="isolatedRuntime">the runtime for this isolated service</param> public EPAdministratorIsolatedImpl(string isolatedServiceName, EPIsolationUnitServices services, EPServicesContext unisolatedServices, EPRuntimeIsolatedSPI isolatedRuntime) { _isolatedServiceName = isolatedServiceName; _services = services; _unisolatedServices = unisolatedServices; _isolatedRuntime = isolatedRuntime; }
private void RunAssertionNextScheduledTime(EPServiceProvider epService) { EPRuntimeSPI runtimeSPI = (EPRuntimeSPI)epService.EPRuntime; epService.EPRuntime.SendEvent(new CurrentTimeEvent(0)); Assert.IsNull(epService.EPRuntime.NextScheduledTime); AssertSchedules(runtimeSPI.StatementNearestSchedules, new Object[0][]); EPStatement stmtOne = epService.EPAdministrator.CreateEPL("select * from pattern[timer:interval(2 sec)]"); Assert.AreEqual(2000L, (long)epService.EPRuntime.NextScheduledTime); AssertSchedules(runtimeSPI.StatementNearestSchedules, new object[][] { new object[] { stmtOne.Name, 2000L } }); EPStatement stmtTwo = epService.EPAdministrator.CreateEPL("@Name('s2') select * from pattern[timer:interval(150 msec)]"); Assert.AreEqual(150L, (long)epService.EPRuntime.NextScheduledTime); AssertSchedules(runtimeSPI.StatementNearestSchedules, new object[][] { new object[] { "s2", 150L }, new object[] { stmtOne.Name, 2000L } }); stmtTwo.Dispose(); Assert.AreEqual(2000L, (long)epService.EPRuntime.NextScheduledTime); AssertSchedules(runtimeSPI.StatementNearestSchedules, new object[][] { new object[] { stmtOne.Name, 2000L } }); EPStatement stmtThree = epService.EPAdministrator.CreateEPL("select * from pattern[timer:interval(3 sec) and timer:interval(4 sec)]"); Assert.AreEqual(2000L, (long)epService.EPRuntime.NextScheduledTime); AssertSchedules(runtimeSPI.StatementNearestSchedules, new object[][] { new object[] { stmtOne.Name, 2000L }, new object[] { stmtThree.Name, 3000L } }); epService.EPRuntime.SendEvent(new CurrentTimeEvent(2500)); Assert.AreEqual(3000L, (long)epService.EPRuntime.NextScheduledTime); AssertSchedules(runtimeSPI.StatementNearestSchedules, new object[][] { new object[] { stmtThree.Name, 3000L } }); epService.EPRuntime.SendEvent(new CurrentTimeEvent(3500)); Assert.AreEqual(4000L, (long)epService.EPRuntime.NextScheduledTime); AssertSchedules(runtimeSPI.StatementNearestSchedules, new object[][] { new object[] { stmtThree.Name, 4000L } }); epService.EPRuntime.SendEvent(new CurrentTimeEvent(4500)); Assert.AreEqual(null, epService.EPRuntime.NextScheduledTime); AssertSchedules(runtimeSPI.StatementNearestSchedules, new Object[0][]); // test isolated service EPServiceProviderIsolated isolated = epService.GetEPServiceIsolated("I1"); EPRuntimeIsolatedSPI isolatedSPI = (EPRuntimeIsolatedSPI)isolated.EPRuntime; isolated.EPRuntime.SendEvent(new CurrentTimeEvent(0)); Assert.IsNull(isolated.EPRuntime.NextScheduledTime); AssertSchedules(isolatedSPI.StatementNearestSchedules, new Object[0][]); EPStatement stmtFour = isolated.EPAdministrator.CreateEPL("select * from pattern[timer:interval(2 sec)]", null, null); Assert.AreEqual(2000L, (long)isolatedSPI.NextScheduledTime); AssertSchedules(isolatedSPI.StatementNearestSchedules, new object[][] { new object[] { stmtFour.Name, 2000L } }); isolated.Dispose(); epService.EPAdministrator.DestroyAllStatements(); }
/// <summary>Ctor. </summary> /// <param name="name">name of isolated service</param> /// <param name="isolatedServices">filter and scheduling service isolated</param> /// <param name="unisolatedSvc">engine services</param> /// <param name="providers">names and isolated service providers</param> public EPServiceProviderIsolatedImpl( String name, EPIsolationUnitServices isolatedServices, EPServicesContext unisolatedSvc, IDictionary <String, EPServiceProviderIsolatedImpl> providers) { _name = name; _providers = providers; _isolatedServices = isolatedServices; _runtime = unisolatedSvc.EpRuntimeIsolatedFactory.Make(isolatedServices, unisolatedSvc); _admin = new EPAdministratorIsolatedImpl(name, isolatedServices, unisolatedSvc, _runtime); }