Exemplo n.º 1
0
        // функция которую вызывает екземпляр класса SendOrdersAsync  this.asyncReceiver
        // после получения ответа о результате отправки заявки
        public void AsyncReplayAdd(long id, uint code, CP2BLMessage reply)
        {
            //узнаем категорию и тип
            string category = (string)reply.get_Field("P2_Category");
            uint type = (uint)reply.get_Field("P2_Type");
            if (category != "FORTS_MSG") return;

            // на всякий случай блокируем очередь
            lock (this.parent.xQueueMsgLock)
            {
                try
                {
                    if (!this.parent.queueMsg.Contains(id))
                    {
                        this.parent.parent.logMsg("OPT Err: не удалось найти в локальном кеше запись с id: " + id.ToString(),1);
                        return;
                    }

                    //блокируем локальную очередь
                    lock (this.mQueueLock)
                    {
                        //добавляем в локальную очередь
                        this.mQueue.Add(id, id);

                        orderInfo ord = (orderInfo)this.parent.queueMsg[id];
                        TimeSpan span = (TimeSpan)(DateTime.Now - ord.sendTime);

                        int p_code = (int)reply.get_Field("code");
                        int p_order_id = 0;
                        string p_message = "";
                        p_message = reply.get_Field("message").ToString();
                        if (p_code == 0)
                        {
                            p_order_id = Convert.ToInt32(reply.get_Field("order_id"));
                        }
                        else
                        {
                            p_message = "Ошибка отправки. " + p_message;
                        }
                        this.parent.parent.logMsg(span.TotalMilliseconds.ToString() + "ms  OPT Add: Выставление заявки  id: " + id.ToString() + "  ecode: " + code.ToString() + " status: " + p_code.ToString() + "-" + p_message + " order_no: " + p_order_id.ToString());

                        ord.setData(code, p_code, p_order_id, p_message);

                        //обновляем в базе заявки
                        this.updateOrdersInTable();

                    }
                }
                catch (Exception exp)
                {
                    this.parent.parent.logMsg("FUT Add: Выставление заявки  ошибка при получении ответа с биржи " + exp.Message + "  " + exp.InnerException,1);
                }

            }
        }
Exemplo n.º 2
0
 void IP2AsyncSendEvent2.SendAsync2Reply(CP2BLMessage reply, uint errCode, long eventParam)
 {
     if (mi != null)
     {
         object[] obj = { eventParam, errCode, reply };
         this.mi.Invoke(sender, obj);
     }
     else
     {
         System.Windows.Forms.MessageBox.Show("Null");
     }
 }
Exemplo n.º 3
0
        public static void PrintReplyMsg(CP2BLMessage reply)
        {
            object c = reply.get_Field("P2_Category");
            object t = reply.get_Field("P2_Type");

            LogWriteLine("category " + c + "; type " + t);

            if( ( (string)c == "FORTS_MSG" ) && ( (System.UInt32)t == 101 ) )
            {
                object code = reply.get_Field("code"); // разбираем ответ
                if ((System.Int32)code == 0)
                    LogWriteLine("Adding order Ok, Order_id is "+reply.get_Field("order_id"));
                else
                    LogWriteLine("Adding order fail, logic error is "+reply.get_Field("message"));
            }
            else if( ( (string)c == "FORTS_MSG" ) && ( (System.UInt32)t == 100 ) )
            {
                LogWriteLine("Adding order fail, system level error "+reply.get_Field("err_code")+" "+reply.get_Field("message"));
            }
            else
            {
                LogWriteLine("Unexpected MQ message recieved; category " + c + "; type " + t);
            }
        }
        // функция которую вызывает екземпляр класса SendOrdersAsync  this.asyncReceiver
        // после получения ответа о результате отправки заявки
        public void AsyncReplay(long id, uint errCode, CP2BLMessage reply)
        {
            if (!this.parent.queueMsg.Contains(id))
            {
                this.parent.parent.logMsg("Change Money: Ошибка: не удалось найти в локальном кеше запись с id: " + id.ToString());
                return;
            }

            if (errCode == 0x6004)
            {
                this.parent.parent.logMsg("Change Money: Ошибка: Паревышен интервал ожидания ответа. Запись с id: " + id.ToString());
                return;
            }

            //узнаем категорию и тип
            string category = (string)reply.get_Field("P2_Category");
            uint type = (uint)reply.get_Field("P2_Type");

            if (category != "FORTS_MSG")
            {
                string msg = "";
                this.parent.parent.logMsg("Change Money: Ошибка: category " + category+" type: "+type.ToString());
                this.parent.parent.logMsg( "Change Money: Msg: "+reply.get_Field("code"));
                return;
            }

             // на всякий случай блокируем очередь
            lock (this.parent.xQueueMsgLock)
            {
                try
                {
                    if (!this.parent.queueMsg.Contains(id))
                    {
                        this.parent.parent.logMsg("Change Money: Ошибка: не удалось найти в локальном кеше запись с id: " + id.ToString(),1);
                        return;
                    }

                    //блокируем локальную очередь
                    lock (this.mQueueLock)
                    {
                        //добавляем в локальную очередь
                        this.mQueue.Add(id,id);

                        orderInfo ord = (orderInfo)this.parent.queueMsg[id];
                        TimeSpan span = (TimeSpan)(DateTime.Now - ord.sendTime);

                        int p_code=-1;
                        string p_message="";
                        p_code = (int)reply.get_Field("code");

                        switch (type)
                        {
                            case 100:
                                p_message = "Не удалось разобрать ответное сообщение " + reply.get_Field("Message").ToString();
                                break;
                            case 0x68:
                                if (p_code == 0)
                                {
                                    p_message = "Клиентские лимиты изменены";
                                }
                                else
                                {
                                    p_message = "Ошибка отправки. " + reply.get_Field("Message").ToString();
                                }

                                break;
                            default:
                                this.parent.parent.logMsg("Change Money: Ошибка выставление заявки  id: " + id.ToString() + "  ecode: " + errCode.ToString() + " status: " + p_code.ToString(),1);
                                return;
                        }

                        this.parent.parent.logMsg(span.TotalMilliseconds.ToString() + "ms  Change Money: Выставление заявки  id: " + id.ToString() + "  ecode: " + errCode.ToString() + " status: " + p_code.ToString() + "-" + p_message );

                        ord.setData(errCode, p_code, 0, p_message);

                        //обновляем в базе заявки
                        this.updateOrdersInTable();
                    }
                }
                catch (Exception exp)
                {
                    this.parent.parent.logMsg("Change Money: Выставление заявки  ошибка при получении ответа с биржи " + exp.Message + "  " + exp.InnerException,1);
                }
            }
        }
 public void initMessage()
 {
     this.m_futChangeClientMoney = this.parent.m_msgFactory.CreateMessageByName("FutChangeClientMoney");
     this.m_futChangeClientMoney.DestAddr = this.parent.m_con.ResolveService("FORTS_SRV");
     this.m_futChangeClientMoney.set_Field("P2_Category", "FORTS_MSG");
 }
Exemplo n.º 6
0
 void IP2AsyncSendEvent2.SendAsync2Reply(CP2BLMessage reply, uint errCode, long eventParam)
 {
     Class1.LogWriteLine("SendAsync2Reply(" + errCode + ", " + eventParam + ")");
     Class1.PrintReplyMsg(reply);
 }
Exemplo n.º 7
0
 void IP2AsyncMessageEvents.DeliveryEvent(CP2BLMessage reply, uint errCode)
 {
     Class1.LogWriteLine("DeliveryEvent errCode:" + errCode);
     Class1.PrintReplyMsg(reply);
 }
Exemplo n.º 8
0
        public void initMessage()
        {
            this.m_futOrderDel = this.parent.m_msgFactory.CreateMessageByName("FutDelOrder");
            this.m_futOrderDel.DestAddr = this.parent.m_con.ResolveService("FORTS_SRV");
            this.m_futOrderDel.set_Field("P2_Category", "FORTS_MSG");

            this.m_futOrderAdd = this.parent.m_msgFactory.CreateMessageByName("FutAddOrder");
            this.m_futOrderAdd.DestAddr = this.parent.m_con.ResolveService("FORTS_SRV");
            this.m_futOrderAdd.set_Field("P2_Category", "FORTS_MSG");
        }
 public void initMessage()
 {
     this.m_msg = this.parent.m_msgFactory.CreateMessageByName("OptChangeExpiration");
     this.m_msg.DestAddr = this.parent.m_con.ResolveService("FORTS_SRV");
     this.m_msg.set_Field("P2_Category", "FORTS_MSG");
 }