Example #1
0
        /// <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));
        }
Example #2
0
 /// <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
     });
 }
Example #3
0
 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;
 }
Example #4
0
        /// <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);
                }
            }
        }
Example #5
0
 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);
     }
 }
Example #6
0
        /// <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());
        }
Example #7
0
 /// <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());
 }
Example #8
0
 /// <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));
 }