示例#1
0
 private void connect_Click(object sender, EventArgs e)
 {
     createOnlySocketStream(OutStreamList);
     foreach (IPEndPoint ipEndPoint in socketMap.Keys)
     {
         try
         {
             socketMap[ipEndPoint].Connect(ipEndPoint);
             logger.Info(string.Format("conneted {0}", ipEndPoint));
             socketGrid.DataSource = socketMap.ToList <KeyValuePair <IPEndPoint, TcpClient> >();
         }
         catch (Exception error)
         {
             logger.Equals(error.ToString());
         }
     }
 }
示例#2
0
 public void WorkThreadFunction()
 {
     try
     {
         TransactionUtil.transfer2Server();
         TransactionUtil.downloadStation();
         TransactionUtil.downloadAuthenCode();
         TransactionUtil.downloadUsers();
         TransactionUtil.downloadLounge();
         TransactionUtil.downloadArea();
         TransactionUtil.downloadGroup();
         TransactionUtil.downloadRole();
         // do any background work
     }
     catch (Exception ex)
     {
         // log errors
         logger.Equals(ex.Message);
     }
 }
示例#3
0
        public void ReceiveConfirm(STRUCT_0419 message)
        {
            string             OrgOrderNumber = message.ORIGINAL_ORDER_IDENTIFICATION;
            string             OrderNumber    = message.ORDER_IDENTIFICATION;
            int                cancelQty      = Int32.Parse(message.REAL_MODIFY_OR_CANCEL_ORDER_QUANTITY);
            int                orderQty       = Int32.Parse(message.ORDER_QUANTITY);
            int                rejectQty      = orderQty - cancelQty;
            IEnumerable <신규주문> query          = System.Linq.Enumerable.Where <신규주문>(신규주문테이블, n => n.주문번호 == OrgOrderNumber);
            IEnumerable <취소주문> query2         = System.Linq.Enumerable.Where <취소주문>(취소주문테이블, n => n.주문번호 == OrderNumber);
            int                ticketSeq      = 0;

            if (query2.Any <취소주문>())
            {
                foreach (취소주문 find in query2)
                {
                    lock (MainForm.lockObj)
                    {
                        find.취소거부 = rejectQty;
                        find.취소확인 = cancelQty;
                        ticketSeq = find.시퀀스1;
                    }
                }
            }

            if (message.ORDER_REJECTED_REASON_CODE.Equals("0803") || message.ORDER_REJECTED_REASON_CODE.Equals("0804"))
            {
                if (query.Any <신규주문>())
                {
                    STRUCT_0393 order = null;
                    foreach (신규주문 find in query)
                    {
                        find.취소확인 = 0;
                        if (find.매매구분.Equals("1"))
                        {
                            //매수 주문하기
                            order = new STRUCT_0393(find.토픽, ticketSeq, find.종목,
                                                    MainForm.orderNumber.ToString("0000000000"), "0000000000", "2", OrderParam.NewOrder,
                                                    rejectQty.ToString("0000000000"), find.가격);
                        }
                        else
                        {
                            //매도 주문하기
                            order = new STRUCT_0393(find.토픽, ticketSeq, find.종목,
                                                    MainForm.orderNumber.ToString("0000000000"), "0000000000", "1", OrderParam.NewOrder,
                                                    rejectQty.ToString("0000000000"), find.가격);
                        }
                    }

                    if (order != null)
                    {
                        Task NewOrderThread = new Task(() => this.NewOrder(order));
                        NewOrderThread.Start();
                    }
                }
            }
            else
            {
                if (query.Any <신규주문>())
                {
                    STRUCT_0393 order = null;
                    foreach (신규주문 find in query)
                    {
                        find.취소확인 = find.취소확인 + cancelQty;
                        if (cancelQty < orderQty)
                        {
                            if (find.매매구분.Equals("1"))
                            {
                                //매수 주문하기
                                order = new STRUCT_0393(find.토픽, find.시퀀스1, find.종목,
                                                        MainForm.orderNumber.ToString("0000000000"), "0000000000", "2", OrderParam.NewOrder,
                                                        rejectQty.ToString("0000000000"), find.가격);
                            }
                            else
                            {
                                //매도 주문하기
                                order = new STRUCT_0393(find.토픽, find.시퀀스1, find.종목,
                                                        MainForm.orderNumber.ToString("0000000000"), "0000000000", "1", OrderParam.NewOrder,
                                                        rejectQty.ToString("0000000000"), find.가격);
                            }
                        }
                        else
                        {
                            logger.Equals("NEVER canceled qty bigger then cancel qty");
                        }
                    }
                    if (order != null && cancelQty != orderQty) // 실제 취소된 수량과 취소요청 수량이 같을 경우 전량 취소 성공이라 주문을 안낸다
                    {
                        Task NewOrderThread = new Task(() => this.NewOrder(order));
                        NewOrderThread.Start();
                    }
                }
            }
            GETDATA();
        }