static void WebImplementation() { OrderMatchList = new OrderMatchList(CurrentPrice); TradeRecord.SetTradeRecordStartId(TradeRecordStartId); TradeRecordList = new List <TradeRecord>(); IPAddress hostIp = Dns.GetHostAddresses(WebHostMatchEngineIp)[0]; TcpListener listener = new TcpListener(hostIp, WebHostMatchEnginePort); listener.Start(); Console.WriteLine("Waiting for connection..."); while (true) { TcpClient client = listener.AcceptTcpClient(); NetworkStream ns = client.GetStream(); byte[] byteNewOrder = new byte[1024]; int byteNewOrderRealLength = ns.Read(byteNewOrder, 0, byteNewOrder.Length); Order newOrder = Xml.Deserialize(typeof(Order), Encoding.UTF8.GetString(byteNewOrder, 0, byteNewOrderRealLength)) as Order; Console.WriteLine("Order is received and latest price is sent."); TradeRecordList.AddRange(PrintTradeRecord(OrderMatchList.AddOrderGetTradeRecord(newOrder))); CurrentPrice = OrderMatchList.CurrentPrice; byte[] bytePrice = Encoding.ASCII.GetBytes(CurrentPrice.ToString()); ns.Write(bytePrice, 0, bytePrice.Length); client.Close(); } }
static void ReadOrderFromXml(ref Order[] orderQueue) { orderQueue = Xml.Deserialize(typeof(Order[]), File.ReadAllText(FileReadPath)) as Order[]; Console.WriteLine("OrderQueue.xml loaded successfully."); }