Ejemplo n.º 1
0
 /// <summary>
 /// Send TrdeHistory Book to clients
 /// </summary>
 /// <param name="TradeBook">TradeHistoryBook for send.</param>
 public static void SendTradeHistorytoClients(TTradeHistory TradeBook, TcpClient client = null)
 {
     if (TradeBook != null && TradeBook.TradesList.Count > 0)
     {
         try
         {
             var    datasend = JsonConvert.SerializeObject(TradeBook);
             byte[] buffer   = Encoding.ASCII.GetBytes("/TRADEHISTORYBOOK;" + datasend);
             lock (_lock)
             {
                 if (client != null)
                 {
                     Sendbuf2Client(client, buffer);
                 }
                 else
                 {
                     foreach (TcpClient c in _DClients.Values)
                     {
                         Sendbuf2Client(c, buffer);
                     }
                 }
             }
         }
         catch (Exception ex)
         {
             ErrorCatcher(ex, "SendTradeHistorytoClients");
         }
     }
 }
Ejemplo n.º 2
0
 public static void SetOrderTradeHistory(TTradeHistory TRH)
 {
     _TRH = TRH;
 }
Ejemplo n.º 3
0
 public static void TRHInit()
 {
     _TRH = new TTradeHistory();
     _TRH.Init();
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Read Command from Client
        /// </summary>
        /// <param name="client">TCPCLIENT</param>
        /// <param name="clientid">ClientID.</param>
        /// <param name="sCommand">received command text.</param>
        /// <param name="byte_count">received length of sCommand.</param>
        public static void readCommand(TcpClient client, string clientid, byte[] sCommand, int byte_count)
        {
            string exception4send = "";
            string ReadData       = Encoding.ASCII.GetString(sCommand, 0, byte_count);

            Console.WriteLine(client.Client.RemoteEndPoint + ":" + ReadData);
            switch (ReadData.Split(';').First())
            {
            case "/UPDATELASTGUIDORDERS":
                string guid4update = ReadData.Split(';')[1].ToString();
                _OB.UpdateLastGuid(guid4update, clientid);
                _TRH.UpdateLastGuid(guid4update, clientid);
                break;

            case "/GETORDERBOOK":
                SendOrderBooktoClients(_OB, client);
                SendTradeHistorytoClients(_TRH);
                break;

            case "/ADDNEWORDER":
                string OrderStr = ReadData.Split(';')[1].ToString();
                if (OrderStr.Length > 0)
                {
                    var  O         = TOrder.Deserialize(OrderStr);
                    bool TradeDone = CheckOrderForTrade(O);
                    if (!TradeDone)
                    {
                        _OB.AddNewOrder(O);
                    }
                    else
                    {
                        SendTradeHistorytoClients(_TRH);
                    }
                    SendOrderBooktoClients(_OB);
                }
                break;

            case "/REMOVEORDER":
                SendOrderBooktoClients(_OB);
                break;

            case "/CLIENTNUMBER":
                clientid = ReadData.Split(';')[1]?.ToString();
                SetCurrentUserID(clientid);
                if (_LastUserID.Length > 0)
                {
                    Sendbuf2Client(client, Encoding.ASCII.GetBytes("/UPDATELASTGUIDORDERS;" + _LastUserID));
                }
                File.WriteAllText("_lastguid", clientid);
                Sendbuf2Client(client, Encoding.ASCII.GetBytes("/GETORDERBOOK;"));
                break;

            case "/ORDERBOOK":
                string jsdataOB = ReadData.Split(';')[1]?.ToString();
                _OB = JsonConvert.DeserializeObject <TOrderBook>(jsdataOB);
                break;

            case "/TRADEHISTORYBOOK":
                string jsdataTH = ReadData.Split(';')[1]?.ToString();
                _TRH = JsonConvert.DeserializeObject <TTradeHistory>(jsdataTH);
                break;
            }
            if (exception4send.Length > 0)
            {
                Sendbuf2Client(client, Encoding.ASCII.GetBytes("/ERROR;" + exception4send));
            }
        }