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);
}
}