/// <summary> /// 获取远程表达式数据 /// </summary> /// <param name="data"></param> 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); }
/// <summary> /// 获取远程表达式数据 /// </summary> /// <param name="node">远程表达式节点</param> /// <returns>返回值类型</returns> private TcpServer.ReturnValue <RemoteExpression.ReturnValue> getRemoteExpression(ref RemoteExpression.ClientNode node) { RemoteExpression.ReturnValue.Output outputParameter = default(RemoteExpression.ReturnValue.Output); TcpServer.ReturnType returnType = Get(RemoteExpression.ClientNode.CommandInfo, ref node, ref outputParameter); return(new TcpServer.ReturnValue <RemoteExpression.ReturnValue> { Type = returnType, Value = outputParameter.Return }); }
/// <summary> /// 获取远程表达式数据 /// </summary> /// <param name="data"></param> /// <returns></returns> private bool 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)) { RemoteExpression.ReturnValue.Output outputParameter = new RemoteExpression.ReturnValue.Output { Return = inputParameter.GetReturnValue() }; return Send(TcpSimpleServer.OutputInfo.RemoteExpression, ref outputParameter); } returnType = AutoCSer.Net.TcpServer.ReturnType.ServerDeSerializeError; } catch (Exception error) { returnType = AutoCSer.Net.TcpServer.ReturnType.ServerException; Log(error); } return SendOutput(returnType); }