Exemple #1
0
            private void doProcessing()
            {
                string reqType = null;

                Byte[] sendBytes      = null;
                string serverResponse = null;

                try
                {
                    NetworkStream networkStream = clientSocket.GetStream();
                    Console.WriteLine("Lengeth : " + clientSocket.ReceiveBufferSize);
                    byte[] bytesFrom = new byte[(Int32)clientSocket.ReceiveBufferSize + 1];
                    networkStream.Read(bytesFrom, 0, (Int32)clientSocket.ReceiveBufferSize);
                    //reqType = System.Text.Encoding.ASCII.GetString(bytesFrom, 0, 10);
                    Console.WriteLine(" >> " + "From client-" + clNo);
                    OrderStruct os = getStructFromBytes(bytesFrom);
                    RequestType rt = getReqType(os.methodID);

                    switch (rt)
                    {
                    case RequestType.INS:
                        //DO inert activity
                        //OrderStruct osIns = getStructFromBytes(bytesFrom);
                        Orders ord     = new Orders();
                        int    OrderNo = -1;
                        if ((OrderNo = ord.addOrder(os)) < 0)
                        {
                            serverResponse = "FAILURE:INS:ORDID:" + Convert.ToString(OrderNo);
                        }
                        else
                        {
                            serverResponse = "SUCCESS:INS:ORDID:" + Convert.ToString(OrderNo);
                        }
                        break;

                    case RequestType.AMD:
                        //Do amendment activity, cancel the previous and boo new.
                        //OrderStruct osAmd = getStructFromBytes(bytesFrom);
                        Orders AmdOrd     = new Orders();
                        int    newOrderNo = -1;
                        int    oldOrderNo = os.OrderNo;
                        if ((newOrderNo = AmdOrd.amendOrder(ref os)) < 0)
                        {
                            serverResponse = "FAILURE:AMD:OLD-ORDID:" + oldOrderNo;
                        }
                        else
                        {
                            serverResponse = "SUCCESS:AMD:OLD-ORDID:" + oldOrderNo + ":NEW-ORDID:" + newOrderNo;
                        }
                        break;

                    case RequestType.CAN:
                        //Do cancel activity
                        Orders ordCan     = new Orders();
                        int    OrderNoCan = -1;
                        if ((OrderNoCan = ordCan.cancelOrder(os)) < 0)
                        {
                            serverResponse = "FAILURE:CAN:ORDID:" + Convert.ToString(os.OrderNo);
                        }
                        else
                        {
                            serverResponse = "SUCCESS:CAN:ORDID:" + Convert.ToString(OrderNoCan);
                        }
                        break;

                    case RequestType.FIL:
                        //Do cancel activity
                        Orders          ordFilDummy = new Orders();
                        OrderFillStruct ofs         = new OrderFillStruct();
                        Random          r           = new Random();
                        ofs.FillID         = r.Next();
                        ofs.OrderNo        = os.OrderNo;
                        ofs.Quantity       = os.quantity;
                        ofs.FilledQuantity = os.quantity;
                        ofs.Price          = os.price;
                        if (ordFilDummy.addFills(ofs) < 0)
                        {
                            serverResponse = "FAILURE:FIL:ORDID:" + Convert.ToString(os.OrderNo);
                        }
                        else
                        {
                            serverResponse = "SUCCESS:FIL:ORDID:" + Convert.ToString(os.OrderNo);
                        }
                        break;

                    case RequestType.EOD:
                        Orders eodObj      = new Orders();
                        int    totalStatus = -1;
                        if ((totalStatus = eodObj.takeEODPositions()) < 0)
                        {
                            serverResponse = "FAILURE:EOD:" + totalStatus;
                        }
                        else
                        {
                            serverResponse = "FAILURE:EOD:" + totalStatus;
                        }
                        break;

                    default:
                        //Retrn generic error
                        reqType        = System.Text.Encoding.ASCII.GetString(bytesFrom);
                        serverResponse = "ERROR:UNK:ORDID:[" + reqType + "]";
                        break;
                    }
                    sendBytes = Encoding.ASCII.GetBytes(serverResponse);
                    networkStream.Write(sendBytes, 0, sendBytes.Length);
                    networkStream.Flush();
                    this.clientSocket.Close();
                    Console.WriteLine(" >> Closing connection : " + serverResponse);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Exception :  >> " + ex.ToString());
                }
            }