/// <summary> /// 转化结果 /// </summary> /// <param name="Param"></param> /// <returns></returns> public SocketMiddleData ExecuteMapper(object Param) { JObject Obj = (Param as string).ToModel <JObject>(); SendTypeEnum SendType = Enum.Parse <SendTypeEnum>(Obj["SendType"].ToString()); int? SendPort = Convert.ToInt32(Obj["SendPort"].ToString()); ISocketResult Result = Obj["MiddleResult"].ToJson().ToModel <SocketResultDefault>(); ISocketSession Session = Obj["Session"].ToJson().ToModel <SocketSessionDefault>(); return(SocketMiddleData.Middle(SendType, Result, Session, SendPort)); }
/// <summary> /// 传输数据 /// </summary> /// <param name="SendType"></param> /// <param name="Result"></param> /// <param name="Session"></param> /// <param name="SendPort"></param> /// <returns></returns> public static SocketMiddleData Middle(SendTypeEnum SendType, ISocketResult Result, ISocketSession Session = null, int?SendPort = null) { return(new SocketMiddleData() { SendType = SendType, MiddleResult = Result, Session = Session, SendPort = SendPort }); }
private void AddSendBuffer(ISocketResult result) { byte[] data = result.GetResultData(); while (sendlength + data.Length > sendBuffer.Length) { GrowSendBuffer(); } Array.Copy(data, 0, sendBuffer, sendlength, data.Length); sendlength += data.Length; }
/// <summary> /// 把服务注入的API持久化 /// </summary> /// <param name="Param"></param> internal static void ExecuteSocketApiJson(ISocketResult Provider) { var Directories = Path.Combine(AppContext.BaseDirectory, "SocketApi"); if (!Directory.Exists(Directories)) { Directory.CreateDirectory(Directories); } var JsonData = Provider.SocketJsonData.ToModel <Dictionary <string, List <string> > >(); foreach (var Item in JsonData) { var FilePath = Path.Combine(Directories, $"{Item.Key}.json"); if (File.Exists(FilePath)) { File.Delete(FilePath); ExecuteSocketApiFile(FilePath, Provider.SocketJsonData); } else { ExecuteSocketApiFile(FilePath, Provider.SocketJsonData); } } }
public bool SplitPackage() { if (package == null) { package = PackageManager.Create(ref receivedBuffer); } if (package != null) { bool writecompleted = package.Write(ref receivedBuffer); if (writecompleted) { ISocketResult result = msgHandle?.Handle(package, option); AddSendBuffer(result); package = null; SplitPackage(); return(true); } return(false); } else { return(false); } }
/// <summary> /// 处理数据 /// </summary> /// <param name="Controller"></param> /// <param name="Method"></param> /// <returns></returns> protected virtual ISocketResult ExecuteCallDataHandler(Type Controller, MethodInfo Method, ISocketResult Param) { var Ctrl = Activator.CreateInstance(Controller); var ParamInfo = Method.GetParameters().FirstOrDefault(); Object Result; if (ParamInfo?.ParameterType == typeof(PageQuery)) { PageQuery TargetParamerter = Param.SocketJsonData.ToModel <PageQuery>(); Result = ((Task <ActionResult <Object> >)Method.Invoke(Ctrl, new[] { TargetParamerter })).Result.Value; if (Result != null) { return new SocketResultDefault { SocketJsonData = Result.ToJson() } } ; } else if (ParamInfo?.ParameterType == typeof(ResultProvider)) { ResultProvider TargetParamerter = ResultProvider.SetValue(null, Param.SocketJsonData.ToModel <Dictionary <string, Object> >()); Result = ((Task <ActionResult <Object> >)Method.Invoke(Ctrl, new[] { TargetParamerter })).Result.Value; if (Result != null) { return new SocketResultDefault { SocketJsonData = Result.ToJson() } } ; } else { Result = ((Task <ActionResult <Object> >)Method.Invoke(Ctrl, null)).Result.Value; if (Result != null) { return new SocketResultDefault { SocketJsonData = Result.ToJson() } } ; } return(ExecuteNoAuthor()); }
/// <summary> /// 回调数据 /// </summary> /// <param name="Param"></param> /// <param name="SendPort"></param> private static void CallBackInternalInfo(ISocketResult Param, int?SendPort) { SocketClient.Send(SocketMiddleData.Middle(SendTypeEnum.CallBack, Param, null, SendPort).ToJson()); }
/// <summary> /// 处理数据 /// </summary> /// <param name="Controller"></param> /// <param name="Method"></param> /// <returns></returns> protected override ISocketResult ExecuteCallDataHandler(Type Controller, MethodInfo Method, ISocketResult Param) { return(base.ExecuteCallDataHandler(Controller, Method, Param)); }