public RxClient(int interval, string name, DataEventBroker <InspectEvent> inspectBroker, DataEventBroker <double> inspectStatBroker) { Name = name; dt = DateTime.Now; _inspectBroker = inspectBroker; _inspectStatBroker = inspectStatBroker; _interval = interval; }
public RxInspecter() { InspectBroker = new DataEventBroker <InspectEvent>(); InspectStatBroker = new DataEventBroker <double>(); TimeDelay = new List <double>(); InspectBroker.Subscribe(i => { Task.Run(() => { TotalPriceError += i.PriceErrorCount; TotalTimeDelayExceedTol += i.TimeDelayCount; }); }); InspectStatBroker.Subscribe(s => Task.Run(() => TimeDelay.Add(s))); }
public RxBroker() { QuoteBroker = new DataEventBroker <Quote>(); }
static void Main(string[] args) { int clientNumber = 5000; int msec = 1000; int dataCount = 60; Console.WriteLine($"Current Thread [{Thread.CurrentThread.ManagedThreadId}]"); Console.WriteLine("New broker."); var QuoteBroker = new DataEventBroker <Quote>(); List <RxClient> clientList = new List <RxClient>(); var rxInspecter = new RxInspecter(); Console.WriteLine("Subscribe."); for (int i = 0; i < clientNumber; i++) { var client = new RxClient(msec, $"client[{i}]", rxInspecter.InspectBroker, rxInspecter.InspectStatBroker); clientList.Add(client); QuoteBroker.Subscribe(async q => await client.Update(q)); } Console.WriteLine("Wait for message:"); var timeInterval = TimeSpan.FromMilliseconds(msec); for (int i = 0; i < dataCount; i++) { //Console.WriteLine($"============= Price: {(i + 1) * 10} =============="); Thread.Sleep(timeInterval); QuoteBroker.Publish(new Quote() { Dt = DateTime.Now, Price = (i + 1) * 10 }); } Console.WriteLine("Done."); QuoteBroker.Close(); Thread.Sleep(10000); Console.WriteLine(rxInspecter.TotalPriceError); Console.WriteLine(rxInspecter.TotalTimeDelayExceedTol); rxInspecter.InspectStatBroker.Close(); var avg = rxInspecter.TimeDelay.Average(); Console.WriteLine(avg.ToString()); using (StreamWriter sr = new StreamWriter($"msec_{msec}_pos_{clientNumber}_data_{dataCount}.txt")) { //for (int i = 0; i < rxInspecter.TimeDelay.Count; i++) //{ // Console.WriteLine(rxInspecter.TimeDelay[i]); // sr.WriteLine(rxInspecter.TimeDelay[i].ToString()); //} foreach (var item in rxInspecter.TimeDelay) { sr.WriteLine(item.ToString()); } } Console.ReadLine(); }