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); }
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); }
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))); } }
public virtual void SendPacket(SimpleProtocolStruct packet) { byte[] data = packet.ToBytes(); m_socketClient.Send(data, 0, data.Length, SocketFlags.None); }
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); }
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); }