Beispiel #1
0
 /// <summary>
 /// 获取远程表达式数据
 /// </summary>
 /// <param name="node">远程表达式节点</param>
 /// <returns>返回值类型</returns>
 public TcpServer.ReturnValue <returnType> GetRemoteExpression <returnType>(RemoteExpression.Node <returnType> node)
 {
     if (remoteExpressionServerNodeIdChecker != null)
     {
         RemoteExpression.ClientNode clientNode;
         TcpServer.ReturnType        type = GetRemoteExpressionClientNode(node, out clientNode);
         if (type == TcpServer.ReturnType.Success)
         {
             TcpServer.ReturnValue <RemoteExpression.ReturnValue> value = getRemoteExpression(ref clientNode);
             if (value.Type == TcpServer.ReturnType.Success)
             {
                 return(((RemoteExpression.ReturnValue <returnType>)value.Value).Value);
             }
             return(new TcpServer.ReturnValue <returnType> {
                 Type = value.Type
             });
         }
         return(new TcpServer.ReturnValue <returnType> {
             Type = type
         });
     }
     return(new TcpServer.ReturnValue <returnType> {
         Type = TcpServer.ReturnType.RemoteExpressionNotSupport
     });
 }
Beispiel #2
0
        /// <summary>
        /// 获取客户端远程表达式节点
        /// </summary>
        /// <param name="node">远程表达式节点</param>
        /// <param name="clientNode">客户端远程表达式节点</param>
        /// <returns>返回值类型</returns>
        public TcpServer.ReturnType GetRemoteExpressionClientNode(RemoteExpression.Node node, out RemoteExpression.ClientNode clientNode)
        {
            RemoteExpressionServerNodeIdChecker checker = remoteExpressionServerNodeIdChecker;

            TcpServer.ReturnType returnType = checker.Check(node);
            clientNode = returnType == TcpServer.ReturnType.Success ? new RemoteExpression.ClientNode {
                Node = node, Checker = checker, ClientNodeId = node.ClientNodeId
            } : default(RemoteExpression.ClientNode);
            return(returnType);
        }
Beispiel #3
0
        public TcpServer.ReturnType CallRemoteExpression(RemoteExpression.Node node)
        {
            if (remoteExpressionServerNodeIdChecker != null)
            {
                RemoteExpression.ClientNode clientNode;

                TcpServer.ReturnType type = GetRemoteExpressionClientNode(node, out clientNode);
                return(type == TcpServer.ReturnType.Success ? getRemoteExpression(ref clientNode).Type : type);
            }
            return(TcpServer.ReturnType.RemoteExpressionNotSupport);
        }
Beispiel #4
0
        /// <summary>
        /// 获取客户端远程表达式节点
        /// </summary>
        /// <param name="node">远程表达式节点</param>
        /// <returns>客户端远程表达式节点</returns>
        public RemoteExpression.ClientNode GetRemoteExpressionClientNode(RemoteExpression.Node node)
        {
            RemoteExpressionServerNodeIdChecker checker = remoteExpressionServerNodeIdChecker;

            if (checker.Check(node) == TcpServer.ReturnType.Success)
            {
                return new RemoteExpression.ClientNode {
                           Node = node, Checker = checker, ClientNodeId = node.ClientNodeId
                }
            }
            ;
            throw new InvalidCastException();
        }
Beispiel #5
0
        /// <summary>
        /// 获取客户端远程表达式参数节点
        /// </summary>
        /// <typeparam name="returnType">返回值类型</typeparam>
        /// <param name="node">远程表达式参数节点</param>
        /// <returns>客户端远程表达式参数节点</returns>
        public RemoteExpression.ClientNode <returnType> GetRemoteExpressionClientNodeParameter <returnType>(RemoteExpression.Node <returnType> node)
        {
            RemoteExpressionServerNodeIdChecker checker = remoteExpressionServerNodeIdChecker;

            if (checker.Check(node) == TcpServer.ReturnType.Success)
            {
                return new RemoteExpression.ClientNode <returnType> {
                           Node = node, Checker = checker
                }
            }
            ;
            throw new InvalidCastException();
        }
Beispiel #6
0
 public TcpServer.AwaiterBox <RemoteExpression.ReturnValue> GetRemoteExpressionAwaiter(RemoteExpression.Node node)
 {
     return(Sender.GetRemoteExpressionAwaiter(node));
 }
Beispiel #7
0
 public TcpServer.ReturnValue <returnType> GetRemoteExpression <returnType>(RemoteExpression.Node <returnType> node)
 {
     return(Sender.GetRemoteExpression(node));
 }
Beispiel #8
0
 public TcpServer.ReturnType CallRemoteExpression(RemoteExpression.Node node)
 {
     return(Sender.CallRemoteExpression(node));
 }
Beispiel #9
0
 public RemoteExpression.ClientNode <returnType> GetRemoteExpressionClientNodeParameter <returnType>(RemoteExpression.Node <returnType> node)
 {
     return(Sender.GetRemoteExpressionClientNodeParameter(node));
 }
Beispiel #10
0
 public RemoteExpression.ClientNode GetRemoteExpressionClientNode(RemoteExpression.Node node)
 {
     return(Sender.GetRemoteExpressionClientNode(node));
 }
Beispiel #11
0
 public TcpServer.ReturnType GetRemoteExpressionClientNode(RemoteExpression.Node node, out RemoteExpression.ClientNode clientNode)
 {
     return(Sender.GetRemoteExpressionClientNode(node, out clientNode));
 }