public AutoCSer.Net.TcpServer.ReturnValue <int> this[int index]
            {
                get
                {
                    AutoCSer.Net.TcpServer.AutoWaitReturnValue <TcpOpenStreamServer._p1> _wait_ = AutoCSer.Net.TcpServer.AutoWaitReturnValue <TcpOpenStreamServer._p1> .Pop();

                    try
                    {
                        AutoCSer.Net.TcpOpenStreamServer.ClientSocketSender _socket_ = _TcpClient_.Sender;
                        if (_socket_ != null)
                        {
                            TcpOpenStreamServer._p2 _inputParameter_ = new TcpOpenStreamServer._p2
                            {
                                index = index,
                            };
                            AutoCSer.Net.TcpServer.ReturnValue <TcpOpenStreamServer._p1> _outputParameter_ = _socket_.WaitGet <TcpOpenStreamServer._p2, TcpOpenStreamServer._p1>(_c1, ref _wait_, ref _inputParameter_);
                            return(new AutoCSer.Net.TcpServer.ReturnValue <int> {
                                Type = _outputParameter_.Type, Value = _outputParameter_.Value.Return
                            });
                        }
                    }
                    finally
                    {
                        if (_wait_ != null)
                        {
                            AutoCSer.Net.TcpServer.AutoWaitReturnValue <TcpOpenStreamServer._p1> .PushNotNull(_wait_);
                        }
                    }
                    return(new AutoCSer.Net.TcpServer.ReturnValue <int> {
                        Type = AutoCSer.Net.TcpServer.ReturnType.ClientException
                    });
                }
                set
                {
                    AutoCSer.Net.TcpServer.AutoWaitReturnValue _wait_ = AutoCSer.Net.TcpServer.AutoWaitReturnValue.Pop();
                    try
                    {
                        AutoCSer.Net.TcpOpenStreamServer.ClientSocketSender _socket_ = _TcpClient_.Sender;
                        if (_socket_ != null)
                        {
                            TcpOpenStreamServer._p3 _inputParameter_ = new TcpOpenStreamServer._p3
                            {
                                index = index,

                                value = value,
                            };
                            AutoCSer.Net.TcpServer.ReturnType _returnType_ = _socket_.WaitCall(_c2, ref _wait_, ref _inputParameter_);
                            if (_returnType_ == AutoCSer.Net.TcpServer.ReturnType.Success)
                            {
                                return;
                            }
                            throw new Exception(_returnType_.ToString());
                        }
                    }
                    finally
                    {
                        if (_wait_ != null)
                        {
                            AutoCSer.Net.TcpServer.AutoWaitReturnValue.PushNotNull(_wait_);
                        }
                    }
                    throw new Exception(AutoCSer.Net.TcpServer.ReturnType.ClientException.ToString());
                }
            }
コード例 #2
0
                /// <summary>
                /// @Method.XmlDocument/*IF:Attribute.IsExpired*/ [ Expired ]/*IF:Attribute.IsExpired*/
                /// </summary>
                #endregion IF Method.XmlDocument
                #region LOOP InputParameters
                #region PUSH MethodParameter
                #region IF XmlDocument
                /// <param name="@ParameterName">@XmlDocument</param>
                #endregion IF XmlDocument
                #endregion PUSH MethodParameter
                #endregion LOOP InputParameters
                #region IF InputParameterIndex
                public AutoCSer.Net.TcpServer.ReturnValue <@MethodReturnType.FullName> this[/*LOOP:InputParameters*//*PUSH:MethodParameter*/ @ParameterTypeRefName @ParameterJoinName /*PUSH:MethodParameter*//*LOOP:InputParameters*/]
                {
                    get
                    {
                        #region NAME GetProperty
                        #region IF Attribute.IsExpired
                        return(new AutoCSer.Net.TcpServer.ReturnValue <@MethodReturnType.FullName> {
                            Type = AutoCSer.Net.TcpServer.ReturnType.VersionExpired
                        });

                        #endregion IF Attribute.IsExpired
                        #region NOT Attribute.IsExpired
                        if (_isDisposed_ == 0)
                        {
                            #region IF InputParameterIndex
                            TcpOpenSimpleServer.@InputParameterTypeName _inputParameter_ = new TcpOpenSimpleServer.@InputParameterTypeName
                            {
                                #region LOOP InputParameters
                                /*PUSH:Parameter*/
                                @ParameterName /*PUSH:Parameter*/ = /*NOTE*/ (FullName)(object)/*NOTE*//*PUSH:MethodParameter*/ @ParameterName /*PUSH:MethodParameter*/,
                                #endregion LOOP InputParameters
                            };
                            #endregion IF InputParameterIndex
                            TcpOpenSimpleServer.@OutputParameterTypeName _outputParameter_ = default(TcpOpenSimpleServer.@OutputParameterTypeName);
                            AutoCSer.Net.TcpServer.ReturnType            _returnType_      = _TcpClient_.Get </*IF:InputParameterIndex*/ TcpOpenSimpleServer.@InputParameterTypeName, /*IF:InputParameterIndex*/ TcpOpenSimpleServer.@OutputParameterTypeName>(@MethodIdentityCommand /*IF:InputParameterIndex*/, ref _inputParameter_ /*IF:InputParameterIndex*/, ref _outputParameter_);
                            return(new AutoCSer.Net.TcpServer.ReturnValue <@MethodReturnType.FullName> {
                                Type = _returnType_, Value = _outputParameter_.Return
                            });
                        }
                        return(new AutoCSer.Net.TcpServer.ReturnValue <@MethodReturnType.FullName> {
                            Type = AutoCSer.Net.TcpServer.ReturnType.ClientException
                        });

                        #endregion NOT Attribute.IsExpired
                        #endregion NAME GetProperty
                    }
                    #region PUSH SetMethod
                    set
                    {
                        #region NAME SetProperty
                        #region IF Attribute.IsExpired
                        throw new Exception(AutoCSer.Net.TcpServer.ReturnType.VersionExpired.ToString());
                        #endregion IF Attribute.IsExpired
                        #region NOT Attribute.IsExpired
                        if (_isDisposed_ == 0)
                        {
                            TcpOpenSimpleServer.@InputParameterTypeName _inputParameter_ = new TcpOpenSimpleServer.@InputParameterTypeName
                            {
                                #region LOOP InputParameters
                                /*PUSH:Parameter*/
                                @ParameterName /*PUSH:Parameter*/ = /*NOTE*/ (FullName)(object)/*NOTE*//*PUSH:MethodParameter*/ @ParameterName /*PUSH:MethodParameter*/,
                                #endregion LOOP InputParameters
                            };
                            AutoCSer.Net.TcpServer.ReturnType _returnType_ = _TcpClient_.Call(@MethodIdentityCommand, ref _inputParameter_);
                            if (_returnType_ == AutoCSer.Net.TcpServer.ReturnType.Success)
                            {
                                return;
                            }
                            throw new Exception(_returnType_.ToString());
                        }
                        throw new Exception(AutoCSer.Net.TcpServer.ReturnType.ClientException.ToString());
                        #endregion NOT Attribute.IsExpired
                        #endregion NAME SetProperty
                    }
                    #endregion PUSH SetMethod
                }
コード例 #3
0
                /// <summary>
                /// @Method.XmlDocument/*IF:Attribute.IsExpired*/ [ Expired ]/*IF:Attribute.IsExpired*/
                /// </summary>
                #endregion IF Method.XmlDocument
                #region LOOP InputParameters
                #region PUSH MethodParameter
                #region IF XmlDocument
                /// <param name="@ParameterName">@XmlDocument</param>
                #endregion IF XmlDocument
                #endregion PUSH MethodParameter
                #endregion LOOP InputParameters
                #region IF Method.ReturnXmlDocument
                /// <returns>@Method.ReturnXmlDocument</returns>
                #endregion IF Method.ReturnXmlDocument
                public AutoCSer.Net.TcpServer.ReturnValue /*IF:MethodIsReturn*/ <@MethodReturnType.FullName> /*IF:MethodIsReturn*/ /*PUSH:Method*/ @MethodName/*PUSH:Method*/ (/*LOOP:InputParameters*//*PUSH:MethodParameter*/ @ParameterTypeRefName @ParameterJoinName /*PUSH:MethodParameter*//*LOOP:InputParameters*/)
                {
                    #region IF Attribute.IsExpired
                    #region LOOP InputParameters
                    #region PUSH MethodParameter
                    #region IF IsOut
                    @ParameterName = default(@ParameterType.FullName);
                    #endregion IF IsOut
                    #endregion PUSH MethodParameter
                    #endregion LOOP InputParameters
                    return(new AutoCSer.Net.TcpServer.ReturnValue /*IF:MethodIsReturn*/ <@MethodReturnType.FullName> /*IF:MethodIsReturn*/ {
                        Type = AutoCSer.Net.TcpServer.ReturnType.VersionExpired
                    });

                    #endregion IF Attribute.IsExpired
                    #region NOT Attribute.IsExpired
                    if (_isDisposed_ == 0)
                    {
                        #region IF InputParameterIndex
                        TcpOpenSimpleServer.@InputParameterTypeName _inputParameter_ = new TcpOpenSimpleServer.@InputParameterTypeName
                        {
                            #region LOOP InputParameters
                            #region NOT MethodParameter.IsOut
                            /*PUSH:Parameter*/
                            @ParameterName /*PUSH:Parameter*/ = /*NOTE*/ (FullName)(object)/*NOTE*//*PUSH:MethodParameter*/ @ParameterName /*PUSH:MethodParameter*/,
                            #endregion NOT MethodParameter.IsOut
                            #endregion LOOP InputParameters
                        };
                        #endregion IF InputParameterIndex
                        #region IF OutputParameterIndex
                        TcpOpenSimpleServer.@OutputParameterTypeName _outputParameter_ = new TcpOpenSimpleServer.@OutputParameterTypeName
                        {
                            #region LOOP OutputParameters
                            #region IF MethodParameter.IsRef
                            /*PUSH:Parameter*/
                            @ParameterName /*PUSH:Parameter*/ = /*PUSH:MethodParameter*/ @ParameterName /*PUSH:MethodParameter*/,
                            #endregion IF MethodParameter.IsRef
                            #endregion LOOP OutputParameters
                            #region PUSH ReturnInputParameter
                            Ret = @ParameterName
                                  #endregion PUSH ReturnInputParameter
                        };
                        AutoCSer.Net.TcpServer.ReturnType _returnType_ = _TcpClient_.Get </*IF:InputParameterIndex*/ TcpOpenSimpleServer.@InputParameterTypeName, /*IF:InputParameterIndex*/ TcpOpenSimpleServer.@OutputParameterTypeName>(@MethodIdentityCommand /*IF:InputParameterIndex*/, ref _inputParameter_ /*IF:InputParameterIndex*/, ref _outputParameter_);
                        #region LOOP OutputParameters
                        #region IF InputMethodParameter.IsRefOrOut
                        /*PUSH:MethodParameter*/
                        @ParameterName /*PUSH:MethodParameter*/ = _outputParameter_./*PUSH:Parameter*/ @ParameterName /*PUSH:Parameter*/;
                        #endregion IF InputMethodParameter.IsRefOrOut
                        #endregion LOOP OutputParameters
                        return(new AutoCSer.Net.TcpServer.ReturnValue /*IF:MethodIsReturn*/ <@MethodReturnType.FullName> /*IF:MethodIsReturn*/ {
                            Type = _returnType_ /*IF:MethodIsReturn*/, Value = _outputParameter_.Return                                                                                                                 /*IF:MethodIsReturn*/
                        });

                        #endregion IF OutputParameterIndex
                        #region NOT OutputParameterIndex
                        return(new AutoCSer.Net.TcpServer.ReturnValue /*IF:MethodIsReturn*/ <@MethodReturnType.FullName> /*IF:MethodIsReturn*/ {
                            Type = _TcpClient_.Call(@MethodIdentityCommand /*IF:InputParameterIndex*/, ref _inputParameter_ /*IF:InputParameterIndex*/)
                        });

                        #endregion NOT OutputParameterIndex
                    }
                    #region LOOP InputParameters
                    #region PUSH MethodParameter
                    #region IF IsOut
                    @ParameterName = default(@ParameterType.FullName);
                    #endregion IF IsOut
                    #endregion PUSH MethodParameter
                    #endregion LOOP InputParameters
                    return(new AutoCSer.Net.TcpServer.ReturnValue /*IF:MethodIsReturn*/ <@MethodReturnType.FullName> /*IF:MethodIsReturn*/ {
                        Type = AutoCSer.Net.TcpServer.ReturnType.ClientException
                    });

                    #endregion NOT Attribute.IsExpired
                }
コード例 #4
0
        /// <summary>
        /// 服务端映射标识检测
        /// </summary>
        /// <param name="node"></param>
        /// <param name="types"></param>
        /// <returns>是否映射成功</returns>
        internal unsafe AutoCSer.Net.TcpServer.ReturnType Check(Node node, ref LeftArray <Type> types)
        {
            node.CheckServerNodeId(this, ref types);
            if (types.Length == 0)
            {
                return(AutoCSer.Net.TcpServer.ReturnType.Success);
            }
            int count = types.Length;
            LeftArray <RemoteType> remoteTypes = new LeftArray <RemoteType>(types.Length);

            types.Length = 0;
            AutoCSer.Net.TcpServer.ReturnType returnType = AutoCSer.Net.TcpServer.ReturnType.Success;
            Monitor.Enter(serverNodeIdLock);
            try
            {
                foreach (Type type in types.Array)
                {
                    if (!ServerNodeIds.ContainsKey(type))
                    {
                        types.UnsafeAdd(type);
                        remoteTypes.Add(type);
                    }
                    if (--count == 0)
                    {
                        break;
                    }
                }
                if ((count = types.Length) != 0)
                {
                    AutoCSer.Net.TcpServer.ReturnValue <int[]> ids = Get(remoteTypes.ToArray());
                    if (ids.Type == TcpServer.ReturnType.Success)
                    {
                        fixed(int *idFixed = ids.Value)
                        {
                            int *idStart = idFixed;

                            foreach (Type type in types.Array)
                            {
                                if (*idStart == 0)
                                {
                                    returnType = TcpServer.ReturnType.RemoteExpressionServerNodeError;
                                }
                                else
                                {
                                    ServerNodeIds[type] = *idStart;
                                }
                                if (--count == 0)
                                {
                                    break;
                                }
                                ++idStart;
                            }
                        }
                    }
                    else
                    {
                        returnType = ids.Type;
                    }
                }
            }
            finally { Monitor.Exit(serverNodeIdLock); }
            return(returnType);
        }
コード例 #5
0
 /// <summary>
 /// 返回值
 /// </summary>
 /// <param name="value">返回值</param>
 private ReturnValue(ref AutoCSer.Net.TcpServer.ReturnValue <IdentityReturnParameter> value)
 {
     Type          = value.Value.Parameter.ReturnType;
     TcpReturnType = value.Type;
     Value         = default(returnType);
 }
コード例 #6
0
                /// <summary>
                /// @Method.XmlDocument
                /// </summary>
                #endregion IF Method.XmlDocument
                #region LOOP InputParameters
                #region PUSH MethodParameter
                #region IF XmlDocument
                /// <param name="@ParameterName">@XmlDocument</param>
                #endregion IF XmlDocument
                #endregion PUSH MethodParameter
                #endregion LOOP InputParameters
                #region IF Method.ReturnXmlDocument
                /// <returns>@Method.ReturnXmlDocument</returns>
                #endregion IF Method.ReturnXmlDocument
                public static AutoCSer.Net.TcpServer.ReturnValue /*IF:MethodIsReturn*/ <@MethodReturnType.FullName> /*IF:MethodIsReturn*/ /*PUSH:Method*/ @MethodName/*PUSH:Method*/ (/*LOOP:InputParameters*//*PUSH:MethodParameter*/ @ParameterTypeRefName @ParameterJoinName /*PUSH:MethodParameter*//*LOOP:InputParameters*/)
                {
                    #region IF Attribute.IsExpired
                    #region LOOP InputParameters
                    #region PUSH MethodParameter
                    #region IF IsOut
                    @ParameterName = default(@ParameterType.FullName);
                    #endregion IF IsOut
                    #endregion PUSH MethodParameter
                    #endregion LOOP InputParameters
                    return(new AutoCSer.Net.TcpServer.ReturnValue /*IF:MethodIsReturn*/ <@MethodReturnType.FullName> /*IF:MethodIsReturn*/ {
                        Type = AutoCSer.Net.TcpServer.ReturnType.VersionExpired
                    });

                    #endregion IF Attribute.IsExpired
                    #region NOT Attribute.IsExpired
                    #region IF InputParameterIndex
                    /*PUSH:AutoParameter*/
                    @DefaultNamespace /*PUSH:AutoParameter*/.@SimpleParameterPart /**/.@ServerName /**/.@InputParameterTypeName _inputParameter_ = new /*PUSH:AutoParameter*/ @DefaultNamespace /*PUSH:AutoParameter*/.@SimpleParameterPart /**/.@ServerName /**/.@InputParameterTypeName
                    {
                        #region LOOP InputParameters
                        #region NOT MethodParameter.IsOut
                        /*PUSH:Parameter*/
                        @ParameterName /*PUSH:Parameter*/ = /*NOTE*/ (FullName)(object)/*NOTE*//*PUSH:MethodParameter*/ @ParameterName /*PUSH:MethodParameter*/,
                        #endregion NOT MethodParameter.IsOut
                        #endregion LOOP InputParameters
                    };
                    #endregion IF InputParameterIndex
                    #region IF OutputParameterIndex
                    /*PUSH:AutoParameter*/
                    @DefaultNamespace /*PUSH:AutoParameter*/.@SimpleParameterPart /**/.@ServerName /**/.@OutputParameterTypeName _outputParameter_ = new /*PUSH:AutoParameter*/ @DefaultNamespace /*PUSH:AutoParameter*/.@SimpleParameterPart /**/.@ServerName /**/.@OutputParameterTypeName
                    {
                        #region LOOP OutputParameters
                        #region IF MethodParameter.IsRef
                        /*PUSH:Parameter*/
                        @ParameterName /*PUSH:Parameter*/ = /*PUSH:MethodParameter*/ @ParameterName /*PUSH:MethodParameter*/,
                        #endregion IF MethodParameter.IsRef
                        #endregion LOOP OutputParameters
                        #region PUSH ReturnInputParameter
                        Ret = @ParameterName
                              #endregion PUSH ReturnInputParameter
                    };
                    AutoCSer.Net.TcpServer.ReturnType _returnType_ = /*PUSH:AutoParameter*/ @DefaultNamespace /*PUSH:AutoParameter*/.@SimpleClientPart /**/.@ServerName /**/.TcpClient.Get </*IF:InputParameterIndex*//*PUSH:AutoParameter*/ @DefaultNamespace /*PUSH:AutoParameter*/.@SimpleParameterPart /**/.@ServerName /**/.@InputParameterTypeName, /*IF:InputParameterIndex*//*PUSH:AutoParameter*/ @DefaultNamespace /*PUSH:AutoParameter*/.@SimpleParameterPart /**/.@ServerName /**/.@OutputParameterTypeName>(@StaticMethodIdentityCommand /*IF:InputParameterIndex*/, ref _inputParameter_ /*IF:InputParameterIndex*/, ref _outputParameter_);
                    #region LOOP OutputParameters
                    #region IF InputMethodParameter.IsRefOrOut
                    /*PUSH:MethodParameter*/
                    @ParameterName /*PUSH:MethodParameter*/ = _outputParameter_./*PUSH:Parameter*/ @ParameterName /*PUSH:Parameter*/;
                    #endregion IF InputMethodParameter.IsRefOrOut
                    #endregion LOOP OutputParameters
                    return(new AutoCSer.Net.TcpServer.ReturnValue /*IF:MethodIsReturn*/ <@MethodReturnType.FullName> /*IF:MethodIsReturn*/ {
                        Type = _returnType_ /*IF:MethodIsReturn*/, Value = _outputParameter_.Return                                                                                                                 /*IF:MethodIsReturn*/
                    });

                    #endregion IF OutputParameterIndex
                    #region NOT OutputParameterIndex
                    return(new AutoCSer.Net.TcpServer.ReturnValue /*IF:MethodIsReturn*/ <@MethodReturnType.FullName> /*IF:MethodIsReturn*/ {
                        Type = /*PUSH:AutoParameter*/ @DefaultNamespace /*PUSH:AutoParameter*/.@SimpleClientPart /**/.@ServerName /**/.TcpClient.Call(@StaticMethodIdentityCommand /*IF:InputParameterIndex*/, ref _inputParameter_ /*IF:InputParameterIndex*/)
                    });

                    #endregion NOT OutputParameterIndex
                    #endregion NOT Attribute.IsExpired
                }