示例#1
0
        private void OnResponse(byte[] data)
        {
            bool recvSucc = false;

            byte[] respData = null;
            string method   = string.Empty;
            string errMsg   = string.Empty;

            if (data != null && data.Length > 0)
            {
                Packet.Response resp = DataTranslater.Deserialize <Packet.Response>(data);
                method   = resp.method;
                respData = resp.return_data;
                errMsg   = resp.error;

                recvSucc = !string.IsNullOrEmpty(resp.method) && resp.invoke;
            }

            Delegate callback = GetResponseCallback(method);

            if (callback != null)
            {
                ResponseHandlerDel respCompletion = callback as ResponseHandlerDel;
                if (respCompletion != null)
                {
                    respCompletion(recvSucc, respData, errMsg);
                }
            }
        }
示例#2
0
        public void RequestAsync(string method, byte[] reqData, ResponseHandlerDel responseHandler)
        {
            Packet.Request req = new Packet.Request()
            {
                session    = SessionId,
                method     = method,
                param_data = reqData
            };

            byte[] data = DataTranslater.Serialize(req);

            BookRequest(method, responseHandler);

            _connection.SendAsync(MsgType.REQ, data,
                                  delegate(bool succ, string msg)
            {
                if (succ)
                {
                    Trace.WriteLine(string.Format("Request {0} success.", method));
                }
                else
                {
                    RemoveBookedRequest(method);
                    responseHandler(false, null, msg);
                }
            });
        }