Example #1
0
 /// <summary>
 /// 移除消息响应处理
 /// </summary>
 /// <param name="protoType">消息名</param>
 /// <param name="e">响应函数</param>
 static public void RemoveCallback(ProtoID protoType, DelegateType.ProtoCallback e)
 {
     if (idToCallback.ContainsKey(protoType))
     {
         idToCallback[protoType] -= e;
     }
 }
Example #2
0
        //添加要处理的消息
        public static void addMsgObj(ProtoID protoType, MemoryStream proto)
        {
            ////若没有响应函数则不保存 分为:C#部分和Lua部分
            bool luaListener = sluaAux.luaProtobuf.getInstance().hasLuaListener((int)protoType);

            if (!idToCallback.ContainsKey(protoType) && !luaListener)
            {
                return;
            }

            var obj = new NetThreadMsgPackage(protoType, proto);

            try
            {
                Monitor.Enter(_waitingForRun);

                _waitingForRun.Enqueue(obj);

                Monitor.Pulse(_waitingForRun);
            }
            finally
            {
                Monitor.Exit(_waitingForRun);
            }
        }
Example #3
0
        public void ReadHeaderFromBuffer(byte[] buffer)
        {
            if (buffer.Length < 10)
            {
                return;
            }

            for (int i = 0; i < 4; ++i)
            {
                _sumLen = _sumLen * 256 + (uint)buffer[i];
            }


            for (int j = 4; j < 8; ++j)
            {
                _dlsn = _dlsn * 256 + (uint)buffer[j];
            }

            uint n = 0;

            for (int k = 8; k < 10; ++k)
            {
                n = n * 256 + (uint)buffer[k];
            }

            _id = (ProtoID)n;
        }
Example #4
0
        public void UnregisterReceiveMessage(ProtoID protoID, Action <ulong, IMessage> onReceiveMessage)
        {
            Action <ulong, IMessage> actions;

            if (registerContainer.TryGetValue(protoID, out actions))
            {
                actions -= onReceiveMessage;
            }
        }
Example #5
0
 /// <summary>
 /// 添加脚本对象要处理的网络协议Id及其响应方法
 /// </summary>
 /// <param name="id">协议Id</param>
 /// <param name="handler">进行响应的方法</param>
 protected void AddNetworkHandler(ProtoID id, NetworkEventHandler handler)
 {
     m_HandlerPairs.Add(new KeyValuePair <ProtoID, NetworkEventHandler> (id, handler));
     // 如果脚本处于启用状态,要实时向网络管理器注册事件响应
     if (this.enabled)
     {
         NetworkChangeManager.RegisterWeak(id, handler);
     }
 }
Example #6
0
        /// <summary>
        /// 发送消息统一接口
        /// </summary>
        /// <param name="protoType">消息ID</param>
        /// <param name="msg">消息数据</param>
        public void SendMsg(ProtoID protoType, object msg)
        {
            clientProtoMsg.SendProtoMsg(protoType, msg);
            //			MsgSaving saving = clientProtoMsg.SendProtoMsg(protoType, msg);

            //          if (saving.NeedSave)
            //          {
            //              msgCacheMgr.AddSaving(saving);
            //          }
        }
Example #7
0
 /// <summary>
 /// 添加消息响应处理
 /// </summary>
 /// <param name="protoType">消息名</param>
 /// <param name="e">响应函数</param>
 public static void AddCallback(ProtoID protoType, DelegateType.ProtoCallback e)
 {
     if (idToCallback.ContainsKey(protoType))
     {
         idToCallback[protoType] += e;
     }
     else
     {
         idToCallback[protoType] = e;
     }
 }
Example #8
0
 ReqInfo getTrdReqInfo(uint serialNo, ProtoID protoID)
 {
     lock (trdLock)
     {
         ReqInfo info;
         if (trdReqInfoMap.TryGetValue(serialNo, out info) && info.ProtoID == protoID)
         {
             trdReqInfoMap.Remove(serialNo);
             return(info);
         }
     }
     return(null);
 }
Example #9
0
        void handleTrdOnReply(uint serialNo, ProtoID protoID, object rsp)
        {
            ReqInfo reqInfo = getTrdReqInfo(serialNo, protoID);

            if (reqInfo != null)
            {
                lock (reqInfo.SyncEvent)
                {
                    reqInfo.Rsp = rsp;
                    Monitor.PulseAll(reqInfo.SyncEvent);
                }
            }
        }
Example #10
0
        protected override void OnPush(ProtoHeader protoHeader, byte[] data)
        {
            ProtoID   protoID     = (ProtoID)protoHeader.nProtoID;
            uint      serialNo    = protoHeader.nSerialNo;
            FTSPI_Trd trdCallback = null;

            lock (trdCallbackLock)
            {
                trdCallback = this.trdCallback;
            }

            if (trdCallback == null)
            {
                return;
            }

            switch (protoID)
            {
            case ProtoID.TrdUpdateOrder:    //订单状态变动通知(推送)
            {
                Futu.OpenApi.Pb.TrdUpdateOrder.Response rsp;
                try
                {
                    rsp = Futu.OpenApi.Pb.TrdUpdateOrder.Response.ParseFrom(data);
                }
                catch (InvalidProtocolBufferException)
                {
                    rsp = Futu.OpenApi.Pb.TrdUpdateOrder.Response.CreateBuilder().SetRetType((int)Common.RetType.RetType_Invalid).Build();
                }
                trdCallback.OnReply_UpdateOrder(this, serialNo, rsp);
            }
            break;

            case ProtoID.TrdUpdateOrderFill:    //成交通知(推送)
            {
                Futu.OpenApi.Pb.TrdUpdateOrderFill.Response rsp;
                try
                {
                    rsp = Futu.OpenApi.Pb.TrdUpdateOrderFill.Response.ParseFrom(data);
                }
                catch (InvalidProtocolBufferException)
                {
                    rsp = Futu.OpenApi.Pb.TrdUpdateOrderFill.Response.CreateBuilder().SetRetType((int)Common.RetType.RetType_Invalid).Build();
                }
                trdCallback.OnReply_UpdateOrderFill(this, serialNo, rsp);
            }
            break;
            }
        }
Example #11
0
 public static void ProcessCaches()
 {
     if (_luaStreamCaches.Count > 0)
     {
         for (var index = 0; index < _luaStreamCaches.Count; index++)
         {
             LuaStreamCache cache = _luaStreamCaches[index];
             ProtoID        pID   = cache.id;
             MemoryStream   mem   = cache.stream;
             //Debug.LogWarning("发送缓存LUA消息:" + pID);
             sluaAux.luaProtobuf.getInstance().receiveMsg((int)pID, mem);
             cache.Release();
         }
         _luaStreamCaches.Clear();
     }
 }
    /// <summary>
    /// 注销 消息和事件的映射关系
    /// </summary>
    /// <param name="subject">消息Id</param>
    /// <param name="observer">响应事件的委托方法</param>
    public static void Unregister(ProtoID subject, NetworkEventHandler observer)
    {
        if (s_weakNetworkMsgMap.ContainsKey(subject))
        {
            WeakAction weakAction = new WeakAction(observer);

            if (s_weakNetworkMsgMap[subject].Contains(weakAction))
            {
                s_weakNetworkMsgMap[subject].Remove(weakAction);
            }
            if (s_weakNetworkMsgMap[subject] == null)
            {
                s_weakNetworkMsgMap.Remove(subject);
            }
        }
    }
Example #13
0
 //执行
 static public void RunCallback(ProtoID protoType, object proto)
 {
     try
     {
         if (idToCallback.ContainsKey(protoType))
         {
             if (idToCallback[protoType] != null)
             {
                 idToCallback[protoType](proto);
             }
         }
     }
     catch (Exception e)
     {
         Debug.LogException(e);
     }
 }
Example #14
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (ProtoID != 0)
            {
                hash ^= ProtoID.GetHashCode();
            }
            if (PlayerID != 0UL)
            {
                hash ^= PlayerID.GetHashCode();
            }
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }
Example #15
0
        /// <summary>
        /// 测试用的发送协议
        /// </summary>
        /// <param name="body">要发送的网络协议</param>
        /// <param name="rspProtoId">期望收到的响应Id</param>
        /// <param name="timeOutHandler">协议响应超时的处理处理方法</param>
        public void SendTcpClientMessage(ProtoID rspProtoId, ProtoBody body, Action timeOutHandler, bool isShowWaiting = false)
        {
            //protoTimes[rspProtoId] = Time.realtimeSinceStartup;
            //timeOutHandlers[rspProtoId] = timeOutHandler;
            TimeOutData data = new TimeOutData(rspProtoId, timeOutHandler);

            int dataIndex = timeOutHandlers.IndexOf(data);

            if (dataIndex > 0)
            {
                timeOutHandlers[dataIndex].StartTime = Time.realtimeSinceStartup;
            }
            else
            {
                timeOutHandlers.Add(data);
            }

            SendTcpClientMessage(body);
        }
Example #16
0
        void RemoveTimeOutHandlers(ProtoID _protoId)
        {
            List <TimeOutData> timeOutInvalidList = new List <TimeOutData>();

            foreach (var x in timeOutHandlers)
            {
                if (x.rspProtoId == _protoId)
                {
                    timeOutInvalidList.Add(x);
                }
            }

            foreach (var x in timeOutInvalidList)
            {
                timeOutHandlers.Remove(x);
            }

            timeOutInvalidList.Clear();
        }
 /// <summary>
 /// 注册 消息Id和消息响应事件的回调
 /// </summary>
 /// <param name="subject">消息Id</param>
 /// <param name="observer">响应事件的委托方法</param>
 public static void RegisterStrong(ProtoID subject, NetworkEventHandler observer)
 {
     // 已经注册过的消息就在消息列表中追加处理事件
     if (s_strongNetworkMsgMap.ContainsKey(subject))
     {
         if (s_strongNetworkMsgMap[subject].Contains(observer))
         {
             return;
         }
         s_strongNetworkMsgMap[subject].Add(observer);
     }
     // 注册新消息
     else
     {
         List <NetworkEventHandler> actions = new List <NetworkEventHandler>();
         actions.Add(observer);
         s_strongNetworkMsgMap.Add(subject, actions);
     }
 }
 /// <summary>
 /// 注册 消息Id和消息响应事件的回调
 /// </summary>
 /// <param name="subject">消息Id</param>
 /// <param name="observer">响应事件的委托方法</param>
 public static void RegisterWeak(ProtoID subject, NetworkEventHandler observer)
 {
     // 已经注册过的消息就在消息列表中追加处理事件
     if (s_weakNetworkMsgMap.ContainsKey(subject))
     {
         WeakAction weakAction = new WeakAction(observer);
         if (s_weakNetworkMsgMap[subject].Contains(weakAction))
         {
             return;
         }
         s_weakNetworkMsgMap[subject].Add(weakAction);
     }
     // 注册新消息
     else
     {
         List <WeakAction> weakActions = new List <WeakAction>();
         weakActions.Add(new WeakAction(observer));
         s_weakNetworkMsgMap.Add(subject, weakActions);
     }
 }
Example #19
0
        public virtual void Dispose(bool disposing)
        {
            if (!_disposed)
            {
                // dispose managed object
                if (disposing)
                {
                    id = 0;
                }

                // dispose unmanaged objects
                if (stream != null)
                {
                    stream.Dispose();
                }

                stream    = null;
                _disposed = true;
            }
        }
Example #20
0
        //序列化
        protected virtual MsgSaving GenerateStreamFromProto(ProtoID protoType, object msg)
        {
            MemoryStream serializeStream = new MemoryStream();

            ProtoSerializer.Serialize(protoType, serializeStream, msg);

            int sumLen = (int)serializeStream.Length + 2;

            if (sumLen > 65536)
            {
                throw new Exception("Message Length is too large");
            }

            /*
             * if (protoType == ProtoID.CS_LOGIN_RECONNECTION || protoType == ProtoID.CS_LOGIN || protoType == ProtoID.CS_COMMON_HEARTBEAT
             || protoType == ProtoID.CS_COMMON_PROTO_CLEAN || protoType == ProtoID.CS_COMMON_PROTO_COUNT)
             ||{
             || return new MsgSaving(protoType, serializeStream, 0);
             ||}
             ||else
             * */
            return(new MsgSaving(protoType, serializeStream, ClientSn));
        }
Example #21
0
        //消息发送接口
        public virtual MsgSaving SendProtoMsg(ProtoID protoType, object msg)
        {
            if (isDisposed)
            {
                return(default(MsgSaving));
            }

            var save = GenerateStreamFromProto(protoType, msg);

            if (!ClientNetwork.Instance.IsConnected())
            {
                //Utils.LogSys.Log("Going to Connect");
                Utils.LogSys.Log("开始连接服务器");
                //test._obj._txt = "Going to Connect";
                // 仍未连接,先连接服务器,在连接成功后发送
                // 先保存,确认成功发送后删除
                ClientNetwork.Instance.ReconnectWithoutAsk(false);
            }
            else if (ClientNetwork.Instance.IsConnected())
            {
#if UNITY_EDITOR
                Utils.LogSys.Log("Send " + protoType + " proto. ulSn: " + save.Sn);
#endif
                SendSavingMsg(save);
            }

            /*
             * else if (ClientNetwork.Instance.IsConnected() && protoType == ProtoID.CS_LOGIN_RECONNECTION)
             * {
             #if UNITY_EDITOR
             * Utils.LogSys.Log("Send " + protoType + " proto. ulSn: " + save.Sn);
             #endif
             * SendSavingMsg(save);
             * }
             * */
            return(save);
        }
    /// <summary>
    /// 通知响应回调方法,消息到达
    /// </summary>
    /// <param name="subject">消息Id</param>
    /// <param name="msg">传递给处理方法的参数(服务器传回来的数据)</param>
    public static void Notify(ProtoID subject, Protocol msg)
    {
        List <WeakAction>          weakHandlers   = null;
        List <NetworkEventHandler> strongHandlers = null;

        //if (subject.BodyType == typeof(LuaProtoBody) && LuaMessageCallback != null)
        //{
        //    LuaMessageCallback(msg);
        //    return;
        //}

        if (s_weakNetworkMsgMap.TryGetValue(subject, out weakHandlers))
        {
            for (int i = weakHandlers.Count - 1; i >= 0; i--)
            {
                if (!weakHandlers[i].Invoke(msg))
                {
                    weakHandlers.RemoveAt(i);
                }
            }
        }
        else if (s_strongNetworkMsgMap.TryGetValue(subject, out strongHandlers))
        {
            for (int i = strongHandlers.Count - 1; i >= 0; i--)
            {
                if (strongHandlers[i] != null)
                {
                    strongHandlers[i](msg);
                }
            }
        }
        else
        {
            Debug.LogWarning(string.Format("消息{0}未注册事件处理方法", subject.ID));
        }
    }
Example #23
0
 public MsgObject(ProtoID protoType, object proto)
 {
     _protoType = protoType;
     _proto     = proto;
 }
 public bool TryGetValue(ProtoID protoID, out Func <ulong, byte[], IMessage> value)
 {
     return(m_protoContainer.TryGetValue(protoID, out value));
 }
Example #25
0
 /// <summary>
 /// 发送消息统一接口
 /// </summary>
 /// <param name="protoType">消息ID</param>
 /// <param name="msg">消息数据</param>
 /// <param name="verifyCallBack">消息回包的响应函数</param>
 public void SendMsg(ProtoID protoType, object msg, DelegateType.OperationVerify verifyCallBack)
 {
     SendMsg(protoType, msg);
 }
Example #26
0
        protected override void OnReply(ReqReplyType replyType, ProtoHeader protoHeader, byte[] data)
        {
            ProtoID protoID  = (ProtoID)protoHeader.nProtoID;
            int     serialNo = protoHeader.nSerialNo;

            lock (this)
            {
                if (this.trdCallback == null)
                {
                    return;
                }

                switch (protoID)
                {
                case ProtoID.TrdGetAccList:    //获取交易账户列表
                {
                    Futu.OpenApi.Pb.TrdGetAccList.Response rsp;
                    if (replyType == ReqReplyType.SvrReply)
                    {
                        try
                        {
                            rsp = Futu.OpenApi.Pb.TrdGetAccList.Response.ParseFrom(data);
                        }
                        catch (InvalidProtocolBufferException)
                        {
                            rsp = Futu.OpenApi.Pb.TrdGetAccList.Response.CreateBuilder().SetRetType((int)Common.RetType.RetType_Invalid).Build();
                        }
                    }
                    else
                    {
                        rsp = Futu.OpenApi.Pb.TrdGetAccList.Response.CreateBuilder().SetRetType((int)replyType).Build();
                    }

                    this.trdCallback.OnReply_GetAccList(this, serialNo, rsp);
                }
                break;

                case ProtoID.TrdUnlockTrade:    //解锁
                {
                    Futu.OpenApi.Pb.TrdUnlockTrade.Response rsp;
                    if (replyType == ReqReplyType.SvrReply)
                    {
                        try
                        {
                            rsp = Futu.OpenApi.Pb.TrdUnlockTrade.Response.ParseFrom(data);
                        }
                        catch (InvalidProtocolBufferException)
                        {
                            rsp = Futu.OpenApi.Pb.TrdUnlockTrade.Response.CreateBuilder().SetRetType((int)Common.RetType.RetType_Invalid).Build();
                        }
                    }
                    else
                    {
                        rsp = Futu.OpenApi.Pb.TrdUnlockTrade.Response.CreateBuilder().SetRetType((int)replyType).Build();
                    }

                    this.trdCallback.OnReply_UnlockTrade(this, serialNo, rsp);
                }
                break;

                case ProtoID.TrdSubAccPush:    //订阅接收推送数据的交易账户
                {
                    Futu.OpenApi.Pb.TrdSubAccPush.Response rsp;
                    if (replyType == ReqReplyType.SvrReply)
                    {
                        try
                        {
                            rsp = Futu.OpenApi.Pb.TrdSubAccPush.Response.ParseFrom(data);
                        }
                        catch (InvalidProtocolBufferException)
                        {
                            rsp = Futu.OpenApi.Pb.TrdSubAccPush.Response.CreateBuilder().SetRetType((int)Common.RetType.RetType_Invalid).Build();
                        }
                    }
                    else
                    {
                        rsp = Futu.OpenApi.Pb.TrdSubAccPush.Response.CreateBuilder().SetRetType((int)replyType).Build();
                    }

                    this.trdCallback.OnReply_SubAccPush(this, serialNo, rsp);
                }
                break;

                case ProtoID.TrdGetFunds:    //获取账户资金
                {
                    Futu.OpenApi.Pb.TrdGetFunds.Response rsp;
                    if (replyType == ReqReplyType.SvrReply)
                    {
                        try
                        {
                            rsp = Futu.OpenApi.Pb.TrdGetFunds.Response.ParseFrom(data);
                        }
                        catch (InvalidProtocolBufferException)
                        {
                            rsp = Futu.OpenApi.Pb.TrdGetFunds.Response.CreateBuilder().SetRetType((int)Common.RetType.RetType_Invalid).Build();
                        }
                    }
                    else
                    {
                        rsp = Futu.OpenApi.Pb.TrdGetFunds.Response.CreateBuilder().SetRetType((int)replyType).Build();
                    }

                    this.trdCallback.OnReply_GetFunds(this, serialNo, rsp);
                }
                break;

                case ProtoID.TrdGetPositionList:    //获取账户持仓
                {
                    Futu.OpenApi.Pb.TrdGetPositionList.Response rsp;
                    if (replyType == ReqReplyType.SvrReply)
                    {
                        try
                        {
                            rsp = Futu.OpenApi.Pb.TrdGetPositionList.Response.ParseFrom(data);
                        }
                        catch (InvalidProtocolBufferException)
                        {
                            rsp = Futu.OpenApi.Pb.TrdGetPositionList.Response.CreateBuilder().SetRetType((int)Common.RetType.RetType_Invalid).Build();
                        }
                    }
                    else
                    {
                        rsp = Futu.OpenApi.Pb.TrdGetPositionList.Response.CreateBuilder().SetRetType((int)replyType).Build();
                    }

                    this.trdCallback.OnReply_GetPositionList(this, serialNo, rsp);
                }
                break;

                case ProtoID.TrdGetMaxTrdQtys:    //获取最大交易数量
                {
                    Futu.OpenApi.Pb.TrdGetMaxTrdQtys.Response rsp;
                    if (replyType == ReqReplyType.SvrReply)
                    {
                        try
                        {
                            rsp = Futu.OpenApi.Pb.TrdGetMaxTrdQtys.Response.ParseFrom(data);
                        }
                        catch (InvalidProtocolBufferException)
                        {
                            rsp = Futu.OpenApi.Pb.TrdGetMaxTrdQtys.Response.CreateBuilder().SetRetType((int)Common.RetType.RetType_Invalid).Build();
                        }
                    }
                    else
                    {
                        rsp = Futu.OpenApi.Pb.TrdGetMaxTrdQtys.Response.CreateBuilder().SetRetType((int)replyType).Build();
                    }

                    this.trdCallback.OnReply_GetMaxTrdQtys(this, serialNo, rsp);
                }
                break;

                case ProtoID.TrdGetOrderList:    //获取当日订单列表
                {
                    Futu.OpenApi.Pb.TrdGetOrderList.Response rsp;
                    if (replyType == ReqReplyType.SvrReply)
                    {
                        try
                        {
                            rsp = Futu.OpenApi.Pb.TrdGetOrderList.Response.ParseFrom(data);
                        }
                        catch (InvalidProtocolBufferException)
                        {
                            rsp = Futu.OpenApi.Pb.TrdGetOrderList.Response.CreateBuilder().SetRetType((int)Common.RetType.RetType_Invalid).Build();
                        }
                    }
                    else
                    {
                        rsp = Futu.OpenApi.Pb.TrdGetOrderList.Response.CreateBuilder().SetRetType((int)replyType).Build();
                    }

                    this.trdCallback.OnReply_GetOrderList(this, serialNo, rsp);
                }
                break;

                case ProtoID.TrdPlaceOrder:    //下单
                {
                    Futu.OpenApi.Pb.TrdPlaceOrder.Response rsp;
                    if (replyType == ReqReplyType.SvrReply)
                    {
                        try
                        {
                            rsp = Futu.OpenApi.Pb.TrdPlaceOrder.Response.ParseFrom(data);
                        }
                        catch (InvalidProtocolBufferException)
                        {
                            rsp = Futu.OpenApi.Pb.TrdPlaceOrder.Response.CreateBuilder().SetRetType((int)Common.RetType.RetType_Invalid).Build();
                        }
                    }
                    else
                    {
                        rsp = Futu.OpenApi.Pb.TrdPlaceOrder.Response.CreateBuilder().SetRetType((int)replyType).Build();
                    }

                    this.trdCallback.OnReply_PlaceOrder(this, serialNo, rsp);
                }
                break;

                case ProtoID.TrdModifyOrder:    //修改订单
                {
                    Futu.OpenApi.Pb.TrdModifyOrder.Response rsp;
                    if (replyType == ReqReplyType.SvrReply)
                    {
                        try
                        {
                            rsp = Futu.OpenApi.Pb.TrdModifyOrder.Response.ParseFrom(data);
                        }
                        catch (InvalidProtocolBufferException)
                        {
                            rsp = Futu.OpenApi.Pb.TrdModifyOrder.Response.CreateBuilder().SetRetType((int)Common.RetType.RetType_Invalid).Build();
                        }
                    }
                    else
                    {
                        rsp = Futu.OpenApi.Pb.TrdModifyOrder.Response.CreateBuilder().SetRetType((int)replyType).Build();
                    }

                    this.trdCallback.OnReply_ModifyOrder(this, serialNo, rsp);
                }
                break;

                case ProtoID.TrdGetOrderFillList:    //获取当日成交列表
                {
                    Futu.OpenApi.Pb.TrdGetOrderFillList.Response rsp;
                    if (replyType == ReqReplyType.SvrReply)
                    {
                        try
                        {
                            rsp = Futu.OpenApi.Pb.TrdGetOrderFillList.Response.ParseFrom(data);
                        }
                        catch (InvalidProtocolBufferException)
                        {
                            rsp = Futu.OpenApi.Pb.TrdGetOrderFillList.Response.CreateBuilder().SetRetType((int)Common.RetType.RetType_Invalid).Build();
                        }
                    }
                    else
                    {
                        rsp = Futu.OpenApi.Pb.TrdGetOrderFillList.Response.CreateBuilder().SetRetType((int)replyType).Build();
                    }

                    this.trdCallback.OnReply_GetOrderFillList(this, serialNo, rsp);
                }
                break;

                case ProtoID.TrdGetHistoryOrderList:    //获取历史订单列表
                {
                    Futu.OpenApi.Pb.TrdGetHistoryOrderList.Response rsp;
                    if (replyType == ReqReplyType.SvrReply)
                    {
                        try
                        {
                            rsp = Futu.OpenApi.Pb.TrdGetHistoryOrderList.Response.ParseFrom(data);
                        }
                        catch (InvalidProtocolBufferException)
                        {
                            rsp = Futu.OpenApi.Pb.TrdGetHistoryOrderList.Response.CreateBuilder().SetRetType((int)Common.RetType.RetType_Invalid).Build();
                        }
                    }
                    else
                    {
                        rsp = Futu.OpenApi.Pb.TrdGetHistoryOrderList.Response.CreateBuilder().SetRetType((int)replyType).Build();
                    }

                    this.trdCallback.OnReply_GetHistoryOrderList(this, serialNo, rsp);
                }
                break;

                case ProtoID.TrdGetHistoryOrderFillList:    //获取历史成交列表
                {
                    Futu.OpenApi.Pb.TrdGetHistoryOrderFillList.Response rsp;
                    if (replyType == ReqReplyType.SvrReply)
                    {
                        try
                        {
                            rsp = Futu.OpenApi.Pb.TrdGetHistoryOrderFillList.Response.ParseFrom(data);
                        }
                        catch (InvalidProtocolBufferException)
                        {
                            rsp = Futu.OpenApi.Pb.TrdGetHistoryOrderFillList.Response.CreateBuilder().SetRetType((int)Common.RetType.RetType_Invalid).Build();
                        }
                    }
                    else
                    {
                        rsp = Futu.OpenApi.Pb.TrdGetHistoryOrderFillList.Response.CreateBuilder().SetRetType((int)replyType).Build();
                    }

                    this.trdCallback.OnReply_GetHistoryOrderFillList(this, serialNo, rsp);
                }
                break;
                }
            }
        }
Example #27
0
 public MsgSaving(ProtoID protoType, MemoryStream stream, ulong sn)
 {
     _protoType = protoType;
     _stream    = stream;
     _sn        = sn;
 }
Example #28
0
 public bool TryGetValue(ProtoID protoID, out Action <byte[]> ack)
 {
     return(m_container.TryGetValue(protoID, out ack));
 }
Example #29
0
 internal ReqInfo(ProtoID protoID, object syncEvent)
 {
     this.ProtoID   = protoID;
     this.SyncEvent = syncEvent;
 }
Example #30
0
        public static void PushStreamCache(ProtoID pid, MemoryStream stream)
        {
            LuaStreamCache cache = new LuaStreamCache(pid, stream);

            PushStreamCache(cache);
        }