public WcfPointInputAdapter(CepEventType eventType, WcfAdapterConfig configInfo) { this.eventType = eventType; this.sync = new object(); // Initialize the service host. The host is opened and closed as the adapter is started // and stopped. this.host = new ServiceHost(this); host.AddServiceEndpoint(typeof(IPointInputAdapter), new WSHttpBinding(), configInfo.ServiceAddress); // Poll the adapter to determine when it is time to stop. this.timer = new Timer(CheckStopping); this.timer.Change(StopPollingPeriod, Timeout.Infinite); }
public WcfPointOutputAdapter(CepEventType eventType, WcfAdapterConfig configInfo) { this.eventType = eventType; this.sync = new object(); //// Initialize the service host. The host is opened and closed as the adapter is started //// and stopped. //this.host = new ServiceHost(this); //host.AddServiceEndpoint(typeof(IPointOutputAdapter), new WSHttpBinding(), address); #region //start up channelfactory WSHttpBinding myBinding = new WSHttpBinding(); EndpointAddress addr = new EndpointAddress(configInfo.ServiceAddress); factory = new ChannelFactory<IPointEventReceiver>(myBinding, addr); #endregion // Poll the adapter to determine when it is time to stop. //this.timer = new Timer(CheckStopping); //this.timer.Change(StopPollingPeriod, Timeout.Infinite); }
static void Main(string[] args) { Console.WriteLine(":: Starting embedded StreamInsight server ::"); //create SI server using(Server server = Server.Create("Default")) { //create SI application Application app = server.CreateApplication("StreamInsightSignalR.Monitor"); //create input adapter configuration WcfAdapterConfig inConfig = new WcfAdapterConfig() { Password = "", RequireAccessToken = false, Username = "", ServiceAddress = "http://localhost/StreamInsight/Default/InputAdapter" }; //create output adapter configuration WcfAdapterConfig outConfig = new WcfAdapterConfig() { Password = "", RequireAccessToken = false, Username = "", ServiceAddress = "http://localhost/StreamInsight.Monitor/NotificationService.svc" }; //create event stream from the source adapter CepStream<BizEvent> input = CepStream<BizEvent>.Create("BizEventStream", typeof(WcfInputAdapterFactory), inConfig, EventShape.Point); //build initial LINQ query that is a simple passthrough var eventQuery = from i in input select i; //create unbounded SI query that doesn't emit to specific adapter var query0 = eventQuery.ToQuery(app, "BizQueryRaw", string.Empty, EventShape.Point, StreamEventOrder.FullyOrdered); query0.Start(); //create another query that latches onto previous query //filters out all individual web hits used in later agg query var eventQuery1 = from i in query0.ToStream<BizEvent>() where i.Category != "Web" select i; //another query that groups events by type; used here for web site hits var eventQuery2 = from i in query0.ToStream<BizEvent>() group i by i.Category into EventGroup from win in EventGroup.TumblingWindow(TimeSpan.FromSeconds(10)) select new BizEvent { Category = EventGroup.Key, EventMessage = win.Count().ToString() + " web visits in the past 10 seconds" }; //new query that takes result of previous and just emits web groups var eventQuery3 = from i in eventQuery2 where i.Category == "Web" select i; //create new SI queries bound to WCF output adapter var query1 = eventQuery1.ToQuery(app, "BizQuery1", string.Empty, typeof(WcfOutputAdapterFactory), outConfig, EventShape.Point, StreamEventOrder.FullyOrdered); var query2 = eventQuery3.ToQuery(app, "BizQuery2", string.Empty, typeof(WcfOutputAdapterFactory), outConfig, EventShape.Point, StreamEventOrder.FullyOrdered); //start queries query1.Start(); query2.Start(); Console.WriteLine("Query started. Press [Enter] to stop."); Console.ReadLine(); //stop all queries query1.Stop(); query2.Stop(); query0.Stop(); Console.Write("Query stopped."); Console.ReadLine(); } }