/// <summary> /// Open file for reading and then read one line at a time calling the event processing delegate (function pointer) to /// process the event /// </summary> /// <remarks> /// Streaming events sequentially from a file is slightly faster than loading all events into an array before processing. /// It also reduces the memory required when processing a large file. /// </remarks> /// <param name="fileName">Event file name</param> /// <param name="eventProcessingFunction">Delegate (function pointer) for the method that will process the events</param> internal void StreamFromFile(string fileName, ApiEventFeedReplay.EventReceivedHandler eventProcessingFunction) { StreamReader file = null; try { file = new StreamReader(fileName); string line; do { line = file.ReadLine(); if (line != null) { Spark.Event eventItem = ApiEventReaderWriter.Parse(line); eventProcessingFunction(eventItem); } } while (line != null); } finally { if (file != null) { file.Close(); //Close file stream even if there is an error } } }
/// <summary> /// Initiate event reader /// </summary> private void ExecuteEventReader() { ApiEventReaderWriter reader = new ApiEventReaderWriter(); reader.StreamFromFile(FileName, EventRecieved); }
/// <summary> /// Initiate data feed /// </summary> public override void Execute() { ApiEventReaderWriter reader = new ApiEventReaderWriter(); reader.StreamFromFile(FileName, EventRecieved); }