protected void CloseLog(IWrite iWrite, FMRShell.DataType dt, bool stopStream) { FMRShell.TradingDataLogger dataLogger = DataLogger[(int)dt]; dataLogger.Stop(); dataLogger.Dispose(); dataLogger = null; if (stopStream) { StopStream(iWrite, dt); } }
/// <summary> /// /// </summary> /// <param name="iWrite"> /// A <see cref="IWrite"/> /// </param> /// <param name="test"> /// A <see cref="System.Boolean"/> /// </param> /// <param name="dt"> /// A <see cref="FMRShell.DataType"/> /// </param> /// <param name="filename"> /// A <see cref="System.String"/> /// </param> /// <param name="loggerName"> /// A <see cref="System.String"/> /// </param> /// <param name="backlogfile"> /// A <see cref="System.String"/> /// Applicable only in the simulation mode /// If the file is specified (not null) - play back the specified pre-recorded log file /// If null use randomly generated data /// </param> protected void OpenStreamAndLog(IWrite iWrite, bool test, FMRShell.DataType dt, string filename, string loggerName, string backlogfile) { #if USEFMRSIM if (dt == FMRShell.DataType.Maof) { TaskBarLibSim.EventGenerator <K300MaofType> dataMaofGenerator; if (backlogfile == null) { // create Maof data generator dataMaofGenerator = new TaskBarLibSim.MaofDataGeneratorRandom(); } else { // create Maof data generator dataMaofGenerator = new TaskBarLibSim.MaofDataGeneratorLogFile(backlogfile, 1, 0); } // setup the data generator(s) in the K300Class TaskBarLibSim.K300Class.InitStreamSimulation(dataMaofGenerator); } else if (dt == FMRShell.DataType.Rezef) { //create Rezef data generator TaskBarLibSim.RezefDataGeneratorRandom dataRzfGenerator = new TaskBarLibSim.RezefDataGeneratorRandom(); TaskBarLibSim.K300Class.InitStreamSimulation(dataRzfGenerator); } else if (dt == FMRShell.DataType.Madad) { //create Madad data generator TaskBarLibSim.MadadDataGeneratorRandom dataMddGenerator = new TaskBarLibSim.MadadDataGeneratorRandom(); TaskBarLibSim.K300Class.InitStreamSimulation(dataMddGenerator); } else { iWrite.WriteLine(Environment.NewLine + "Warning data type not supported in FMR simulation: " + dt.ToString() + Environment.NewLine); } #endif // Check that there is no data collector created already Console.WriteLine("DT= " + dt.ToString() + " (" + (int)dt + ")"); if (DataCollector == null) { // create Collector (producer) - will do it only once DataCollector = new FMRShell.Collector(this.fmrConection.GetSessionId()); } // create logger which will register itself (AddSink) in the collector FMRShell.TradingDataLogger dataLogger = default(FMRShell.TradingDataLogger); if (dt == FMRShell.DataType.Maof) { dataLogger = new FMRShell.TradingDataLogger(loggerName, filename, false, DataCollector.maofProducer, new FMRShell.MarketDataMaof().Legend); } else if (dt == FMRShell.DataType.Rezef) { dataLogger = new FMRShell.TradingDataLogger(loggerName, filename, false, DataCollector.rezefProducer, new FMRShell.MarketDataRezef().Legend); } else if (dt == FMRShell.DataType.Madad) { dataLogger = new FMRShell.TradingDataLogger(loggerName, filename, false, DataCollector.madadProducer, new FMRShell.MarketDataMadad().Legend); } else { System.Console.WriteLine("No handling for data type " + dt + "(" + (int)dt + ")"); } DataLogger[(int)dt] = dataLogger; // start logger dataLogger.Start(); // start collector, which will start the stream in K300Class DataCollector.Start(dt); debugLoggerShowCallback(iWrite, "", null); if (test) { Thread.Sleep(1000); CloseLog(iWrite, dt, true); } }
protected void OpenStreamAndLog(IWrite iWrite, bool test, FMRShell.DataType dt, string filename, string loggerName) { // use NULL for backlogfile - in simulation mode data generator is random // OpenStreamAndLog(iWrite, test, dt, filename, loggerName, null); }
protected void StopStream(IWrite iWrite, FMRShell.DataType dt) { DataCollector.Stop(dt); }