Ejemplo n.º 1
0
        public static void RequestAsync <T>(string requestMethod, T param, NetHandler callBack)
            where T : class
        {
            if (null == s_netInstace)
            {
                return;
            }
            var request = new SimpleProtocolStruct(requestMethod,
                                                   NetClientSession.LoginUserName, JsonHelper.SerializeTo(param),
                                                   NetClientSession.SessionID);

            request.RequestID = NetTaskRequestIDGen.Gen();

            RequestAsync(request, callBack);
        }
Ejemplo n.º 2
0
        public static void RequestAsync(SimpleProtocolStruct request, NetHandler callBack)
        {
            if (null == s_netInstace)
            {
                return;
            }
            var taskInfo = new NetTaskInfo(request.RequestID, callBack);

            lock (s_responseHandlerDic)
            {
                SAssert.MustTrue(!s_responseHandlerDic.ContainsKey(request.RequestID),
                                 string.Format("出现重复ID请求!!请求参数:{0}", request));

                s_responseHandlerDic.Add(request.RequestID, taskInfo);
            }

            s_netInstace.SendPacket(request);
        }
Ejemplo n.º 3
0
        private static NetHandleResult DefaultNetResponseHandler(SimpleProtocolStruct response, IPEndPoint endpoint)
        {
            var method = response.RequestMethod;

            var requestID = response.RequestID;

            /*
             * SAssert.MustTrue(s_responseMethodHandlerDic.ContainsKey(method),
             *  string.Format("Request {0} has no handler!", method));
             */

            NetTaskInfo taskInfo = null;

            lock (s_responseHandlerDic)
            {
                if (!s_responseHandlerDic.ContainsKey(requestID))
                {
                    return(new NetHandleResult(NetHandleResultCode.Failed,
                                               string.Format("请求ID = {0}没找到处理函数,可能是超时导致,请求参数为:{1}", requestID, response)));
                }

                taskInfo = s_responseHandlerDic[requestID];

                s_responseHandlerDic.Remove(requestID);
            }

            if (taskInfo != null)
            {
                var handler = taskInfo.Handler;

                return(handler.Invoke(response, endpoint));
            }
            else
            {
                return(new NetHandleResult(NetHandleResultCode.Failed,
                                           string.Format("请求ID = {0}没找到处理函数,可能是超时导致,请求参数为:{1}", requestID, response)));
            }
        }
Ejemplo n.º 4
0
 public virtual void SendPacket(SimpleProtocolStruct packet)
 {
     byte[] data = packet.ToBytes();
     m_socketClient.Send(data, 0, data.Length, SocketFlags.None);
 }
Ejemplo n.º 5
0
        public static NetHandleResult AddEntityResponseCommHandler <T>(this UserControl control, SimpleProtocolStruct response, IPEndPoint endpoint)
            where T : BaseEntity <int>, new()
        {
            var handleResult = JsonHelper.DeserializeTo <NetHandleResult>(response.ResponseData);

            control.Dispatcher.BeginInvoke(new Action <NetHandleResult>((result) => {
                if (result.ResultCode == NetHandleResultCode.Succeed)
                {
                    var opResult = JsonHelper.DeserializeTo <BaseOpResult>(result.RetObject.ToString());

                    if (opResult.ResultCode != QueryResultCode.Succeed)
                    {
                        // 操作失败
                        MessageBox.Show(string.Format("服务处理失败,原因:{0}", opResult.RetMsg));
                        return;
                    }
                    else
                    {
                        // 操作成功
                    }
                }
                else
                {
                    MessageBox.Show(string.Format("后台请求:{0}调用失败,原因:{1}", response, result));
                }
            }), DispatcherPriority.DataBind, new object[] { handleResult });

            return(null);
        }
Ejemplo n.º 6
0
        public static NetHandleResult GetEntityListResponseCommHandler <T>(this UserControl control, SimpleProtocolStruct response, IPEndPoint endpoint)
            where T : class, new()
        {
            var handleResult = JsonHelper.DeserializeTo <NetHandleResult>(response.ResponseData);

            control.Dispatcher.BeginInvoke(new Action <NetHandleResult>((result) => {
                if (result.ResultCode == NetHandleResultCode.Succeed)
                {
                    var queryResult = JsonHelper.DeserializeTo <QueryResult <IList <T> > >(result.RetObject.ToString());

                    if (queryResult.ResultCode != 0)
                    {
                        MessageBox.Show(string.Format("服务处理失败,原因:{0}", queryResult.RetMsg));
                        return;
                    }

                    var entityList = queryResult.ResultData;

                    if (null == entityList)
                    {
                        MessageBox.Show(string.Format("服务处理失败,原因:返回结果不是 List<DriverinfoEntity>,type = {0}", result.RetObject.GetType().Name));
                        return;
                    }

                    var viewModeList = entityList;

                    var pageViewMode = new PaggingViewMode <T>(viewModeList);

                    control.DataContext = pageViewMode;
                }
                else
                {
                    MessageBox.Show(string.Format("后台请求:{0}调用失败,原因:{1}", response, result));
                }
            }), DispatcherPriority.DataBind, new object[] { handleResult });

            return(null);
        }