/// <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;
 }
Beispiel #2
0
        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);
        }