AutoCSer.Net.TcpOpenServer.ServerSocketSender.GetRemoteExpression C# (CSharp) Method

GetRemoteExpression() private method

获取远程表达式数据
private GetRemoteExpression ( SubArray &data ) : void
data SubArray
return void
        internal void GetRemoteExpression(ref SubArray<byte> data)
        {
            AutoCSer.Net.TcpServer.ReturnType returnType = AutoCSer.Net.TcpServer.ReturnType.Unknown;
            try
            {
                RemoteExpression.ClientNode inputParameter = default(RemoteExpression.ClientNode);
                if (DeSerialize(ref data, ref inputParameter, false))
                {
                    if (Server.ServerAttribute.RemoteExpressionTask == TcpServer.ServerTaskType.Synchronous)
                    {
                        TcpServer.ReturnValue<RemoteExpression.ReturnValue.Output> outputParameter = new RemoteExpression.ReturnValue.Output { Return = inputParameter.GetReturnValue() };
                        Push<RemoteExpression.ReturnValue.Output>(ServerSocket.CommandIndex, IsBuildOutputThread ? RemoteExpression.ReturnValue.Output.OutputThreadInfo : RemoteExpression.ReturnValue.Output.OutputInfo, ref outputParameter);
                    }
                    else (AutoCSer.Threading.RingPool<GetRemoteExpressionServerCall>.Default.Pop() ?? new GetRemoteExpressionServerCall()).Set(this, ref Server.ServerAttribute, ref inputParameter);
                    return;
                }
                returnType = AutoCSer.Net.TcpServer.ReturnType.ServerDeSerializeError;
            }
            catch (Exception error)
            {
                returnType = AutoCSer.Net.TcpServer.ReturnType.ServerException;
                AddLog(error);
            }
            Push(returnType);
        }
    }