public SymTask(bool isUnique) { pKey = null; pTaskID = 0; phase = PHASE_BLOCK; pIsUnique = isUnique; pMessageInput = null; pSynchronized = false; pForeignTaskID = 0; handlers = new ConcurrentDictionary<Type, TaskHandlerDescriptor>(); }
/// <summary> /// Binds the query template to the specified adapters. /// </summary> /// <param name="inputAdapter">Input adapter metadata object to bind to all query template inputs.</param> /// <param name="outputAdapter">Input adapter metadata object to bind to the query template output.</param> /// <param name="queryTemplate">Query template to bind to adapters.</param> /// <returns>The query binder.</returns> private static QueryBinder BindQuery(InputAdapter inputAdapter, OutputAdapter outputAdapter, QueryTemplate queryTemplate) { // Create a query binder, wrapping the query template. QueryBinder queryBinder = new QueryBinder(queryTemplate); // Define the runtime configuration for both input adapters. var sensorInputConf = new TextFileReaderConfig { InputFileName = @"..\..\..\TrafficSensors.csv", Delimiter = ',', CtiFrequency = 9, CultureName = "en-US", InputFieldOrders = new Collection<string>() { "SensorId", "AverageSpeed", "VehicularCount" } }; var locationInputConf = new TextFileReaderConfig { InputFileName = @"..\..\..\TrafficSensorLocations.csv", Delimiter = ',', CtiFrequency = 100, CultureName = "en-US", InputFieldOrders = new Collection<string>() { "SensorId", "LocationId" } }; // Define the runtime configuration for the output adapter. // Specify an empty file name, which will just dump the output // events on the console. Also pass an event handle name to // synchronize the shutdown. var outputConf = new TextFileWriterConfig { OutputFileName = string.Empty, Delimiter = '\t' }; // Bind input adapters to query template's input streams, // applying runtime configuration. // In this example, the given input file for sensor input // contains interval events (each sensor reading has a start // and end time), while the location input is represented by // edge events (for each event, the end time is not known in // advance). queryBinder.BindProducer("sensorInput", inputAdapter, sensorInputConf, EventShape.Interval); queryBinder.BindProducer("locationInput", inputAdapter, locationInputConf, EventShape.Edge); // Bind output adapter to query, applying runtime // configuration. queryBinder.AddConsumer<TextFileWriterConfig>("queryresult", outputAdapter, outputConf, EventShape.Point, StreamEventOrder.FullyOrdered); return queryBinder; }
/// <summary> /// Example of using a user-defined filter /// </summary> /// <param name="application"></param> /// <param name="inputConfig"></param> /// <param name="outputConfig"></param> /// <param name="inputAdapter"></param> /// <param name="outputAdapter"></param> /// <returns></returns> private static Query createUserFilterExampleQuery(Application application, StockQuoteInputConfig inputConfig, StockQuoteOutputConfig outputConfig, InputAdapter inputAdapter, OutputAdapter outputAdapter) { var input = CepStream<StockQuote>.Create("input"); var filteredCepStream = from e in input where UserDefinedFilter(e.FieldID) select e; var queryTemplate = application.CreateQueryTemplate("userFilterExampleTemplate", "Description...", filteredCepStream); var queryBinder = new QueryBinder(queryTemplate); queryBinder.BindProducer<StockQuote>("input", inputAdapter, inputConfig, EventShape.Point); queryBinder.AddConsumer<StockQuote>("output", outputAdapter, outputConfig, EventShape.Point, StreamEventOrder.ChainOrdered); var query = application.CreateQuery("userFilterExampleQuery", "Description...", queryBinder); return query; }
/// <summary> /// Example of using a user-defined aggregate /// </summary> /// <param name="application"></param> /// <param name="inputConfig"></param> /// <param name="outputConfig"></param> /// <param name="inputAdapter"></param> /// <param name="outputAdapter"></param> /// <returns></returns> private static Query createStandardDeviationExampleQuery(Application application, StockQuoteInputConfig inputConfig, StockQuoteOutputConfig outputConfig, InputAdapter inputAdapter, OutputAdapter outputAdapter) { var input = CepStream<StockQuote>.Create("input"); var stddevCepStream = from w in input.Where(e => e.FieldID == "Close") .HoppingWindow(TimeSpan.FromDays(7), TimeSpan.FromDays(1), HoppingWindowOutputPolicy.ClipToWindowEnd) select new StockQuote() { StockID = "ERIC", FieldID = "7-day Stddev", Value = w.StandardDeviation() }; var queryTemplate = application.CreateQueryTemplate("standardDeviationExampleTemplate", "Description...", stddevCepStream); var queryBinder = new QueryBinder(queryTemplate); queryBinder.BindProducer<StockQuote>("input", inputAdapter, inputConfig, EventShape.Point); queryBinder.AddConsumer<StockQuote>("output", outputAdapter, outputConfig, EventShape.Point, StreamEventOrder.ChainOrdered); var query = application.CreateQuery("standardDeviationExampleQuery", "Description...", queryBinder); return query; }
/// <summary> /// Example of a grouping and calculation of averages for the groups /// </summary> /// <param name="application"></param> /// <param name="inputConfig"></param> /// <param name="outputConfig"></param> /// <param name="inputAdapter"></param> /// <param name="outputAdapter"></param> /// <returns></returns> private static Query createGroupApplyExampleQuery(Application application, StockQuoteInputConfig inputConfig, StockQuoteOutputConfig outputConfig, InputAdapter inputAdapter, OutputAdapter outputAdapter) { var input = CepStream<StockQuote>.Create("input"); var ericUSDGroupCepStream = from e in input group e by e.FieldID into eGroup from w in eGroup.HoppingWindow(TimeSpan.FromDays(7), TimeSpan.FromDays(1), HoppingWindowOutputPolicy.ClipToWindowEnd) select new StockQuote() { StockID = "ERIC 7-day avg", FieldID = eGroup.Key, Value = w.Avg(e => e.Value) }; var queryTemplate = application.CreateQueryTemplate("groupApplyExampleTemplate", "Description...", ericUSDGroupCepStream); var queryBinder = new QueryBinder(queryTemplate); queryBinder.BindProducer<StockQuote>("input", inputAdapter, inputConfig, EventShape.Point); queryBinder.AddConsumer<StockQuote>("output", outputAdapter, outputConfig, EventShape.Point, StreamEventOrder.ChainOrdered); var query = application.CreateQuery("groupApplyExampleQuery", "Description...", queryBinder); return query; }
/// <summary> /// Compare USD and SEK stock prices using given exchange rate. Example of a cross join. /// </summary> /// <param name="application"></param> /// <param name="ericUSDConfig"></param> /// <param name="ericSEKConfig"></param> /// <param name="USDSEKConfig"></param> /// <param name="outputConfig"></param> /// <param name="inputAdapter"></param> /// <param name="outputAdapter"></param> /// <returns></returns> private static Query createCrossJoinExampleQuery(Application application, StockQuoteInputConfig ericUSDConfig, StockQuoteInputConfig ericSEKConfig, StockQuoteInputConfig USDSEKConfig, StockQuoteOutputConfig outputConfig, InputAdapter inputAdapter, OutputAdapter outputAdapter) { var ericUSDStream = CepStream<StockQuote>.Create("ericUSDStream"); var ericSEKStream = CepStream<StockQuote>.Create("ericSEKStream"); var USDSEKStream = CepStream<StockQuote>.Create("USDSEKStream"); var ericRecalcCepStream = from eUSD in ericUSDStream from eXch in USDSEKStream // Cross join where eUSD.FieldID == "Close" select new StockQuote() { StockID = "ERIC-Recalc", FieldID = "Close", Value = eUSD.Value * eXch.Value // Convert ERIC USD quote to SEK }; var ericCompareCepStream = from eRecalc in ericRecalcCepStream from eSEK in ericSEKStream where eSEK.FieldID == "Close" select new StockQuote() { StockID = "ERIC-Compare", FieldID = "Diff", Value = eSEK.Value - eRecalc.Value }; var queryTemplate = application.CreateQueryTemplate("ericCompareTemplate", "Description...", ericCompareCepStream); var queryBinder = new QueryBinder(queryTemplate); queryBinder.BindProducer<StockQuote>("ericUSDStream", inputAdapter, ericUSDConfig, EventShape.Point); queryBinder.BindProducer<StockQuote>("ericSEKStream", inputAdapter, ericSEKConfig, EventShape.Point); queryBinder.BindProducer<StockQuote>("USDSEKStream", inputAdapter, USDSEKConfig, EventShape.Point); queryBinder.AddConsumer<StockQuote>("output", outputAdapter, outputConfig, EventShape.Point, StreamEventOrder.ChainOrdered); var query = application.CreateQuery("ericCompareQuery", "Description...", queryBinder); return query; }
/// <summary> /// Example of detecting when stock price falls more than 10% in 7 days /// </summary> /// <param name="application"></param> /// <param name="inputConfig"></param> /// <param name="outputConfig"></param> /// <param name="inputAdapter"></param> /// <param name="outputAdapter"></param> /// <returns></returns> private static Query createBigLooserExampleQuery(Application application, StockQuoteInputConfig inputConfig, StockQuoteOutputConfig outputConfig, InputAdapter inputAdapter, OutputAdapter outputAdapter) { var input = CepStream<StockQuote>.Create("input"); var bigLooserCepStream = (from e1 in input from e2 in input.ShiftEventTime(e => e.StartTime.AddDays(7)) where e1.FieldID == "Close" && e2.FieldID == "Close" select new StockQuote() { StockID = "ERIC > 10% drop", FieldID = "Close", Value = (e1.Value - e2.Value) / e2.Value * 100 }).Where(e => e.Value < -10); var queryTemplate = application.CreateQueryTemplate("bigLooserExampleTemplate", "Description...", bigLooserCepStream); var queryBinder = new QueryBinder(queryTemplate); queryBinder.BindProducer<StockQuote>("input", inputAdapter, inputConfig, EventShape.Point); queryBinder.AddConsumer<StockQuote>("output", outputAdapter, outputConfig, EventShape.Point, StreamEventOrder.ChainOrdered); var query = application.CreateQuery("bigLooserExampleQuery", "Description...", queryBinder); return query; }
void Awake() { Instance = this; }
public void ConvertRouteAdapter_PassedWrongFormatInput_ShouldReturnNull(string routeStr) { var result = InputAdapter.ConvertRouteAdapter(routeStr); Assert.That(result, Is.Null); }
public void ConvertAircraftAdapter_PassedWrongFormatInput_ShouldReturnNull(string aircraftStr) { var result = InputAdapter.ConvertAircraftAdapter(aircraftStr); Assert.That(result, Is.Null); }
public void ConvertPassengerAdapter_PassedWrongFormatInput_ShouldReturnNull(string passengerStr) { var result = InputAdapter.ConvertPassengerAdapter(passengerStr); Assert.That(result, Is.Null); }