private void _M0(socket socket, ref subArray <byte> data)
            {
                fastCSharp.net.returnValue.type returnType = fastCSharp.net.returnValue.type.Unknown;
                try
                {
                    _i0 inputParameter = new _i0();
                    if ((socket.Flags & fastCSharp.net.tcp.commandServer.commandFlags.JsonSerialize) == 0 ? fastCSharp.emit.dataDeSerializer.DeSerialize(ref data, ref inputParameter) : fastCSharp.code.cSharp.tcpBase.JsonDeSerialize(ref inputParameter, ref data))
                    {
                        _o0 outputParameter = new _o0();
                        Func <fastCSharp.net.returnValue <fastCSharp.code.cSharp.tcpBase.subByteArrayBuffer>, bool> callbackReturn = fastCSharp.net.tcp.commandServer.socket.callback <_o0, fastCSharp.code.cSharp.tcpBase.subByteArrayBuffer> .Get(socket, ref outputParameter, 0);

                        if (callbackReturn != null)
                        {
                            _value_.serverAsynchronous(inputParameter.data, callbackReturn);
                        }
                        return;
                    }
                    returnType = fastCSharp.net.returnValue.type.ServerDeSerializeError;
                }
                catch (Exception error)
                {
                    returnType = fastCSharp.net.returnValue.type.ServerException;
                    fastCSharp.log.Error.Add(error, null, true);
                }
                socket.SendStream(socket.Identity, returnType);
            }
 private void _M0(socket socket, ref subArray <byte> data)
 {
     fastCSharp.net.returnValue.type returnType = fastCSharp.net.returnValue.type.Unknown;
     try
     {
         _i0 inputParameter = new _i0();
         if ((socket.Flags & fastCSharp.net.tcp.commandServer.commandFlags.JsonSerialize) == 0 ? fastCSharp.emit.dataDeSerializer.DeSerialize(ref data, ref inputParameter) : fastCSharp.code.cSharp.tcpBase.JsonDeSerialize(ref inputParameter, ref data))
         {
             fastCSharp.threading.task.Tiny.Add(_s0 /**/.GetCall(socket, _value_, ref inputParameter));
             return;
         }
         returnType = fastCSharp.net.returnValue.type.ServerDeSerializeError;
     }
     catch (Exception error)
     {
         returnType = fastCSharp.net.returnValue.type.ServerException;
         fastCSharp.log.Error.Add(error, null, true);
     }
     socket.SendStream(socket.Identity, returnType);
 }
예제 #3
0
            private void _M0(socket socket, ref subArray <byte> data)
            {
                fastCSharp.net.returnValue.type returnType = fastCSharp.net.returnValue.type.Unknown;
                try
                {
                    _i0 inputParameter = new _i0();
                    if ((socket.Flags & fastCSharp.net.tcp.commandServer.commandFlags.JsonSerialize) == 0 ? fastCSharp.emit.dataDeSerializer.DeSerialize(ref data, ref inputParameter) : fastCSharp.code.cSharp.tcpBase.JsonDeSerialize(ref inputParameter, ref data))
                    {
                        _s0 /**/.Call(socket, _value_, ref inputParameter);
                        return;
                    }
                    returnType = fastCSharp.net.returnValue.type.ServerDeSerializeError;
                }
                catch (Exception error)
                {
                    returnType = fastCSharp.net.returnValue.type.ServerException;
                    fastCSharp.log.Error.Add(error, null, true);
                }
                socket.SendStream(socket.Identity, returnType);
            }

            [fastCSharp.emit.dataSerialize(IsMemberMap = false, IsReferenceMember = false)]
            internal struct _i1
            {
                public int left;
                public int right;
            }
            [fastCSharp.emit.dataSerialize(IsMemberMap = false, IsReferenceMember = false)]
            [fastCSharp.emit.boxSerialize]
#if NOJIT
            internal struct _o1 : fastCSharp.net.asynchronousMethod.IReturnParameter
#else
            internal struct _o1 : fastCSharp.net.asynchronousMethod.IReturnParameter <int>
#endif
            {
                [fastCSharp.emit.jsonSerialize.member(IsIgnoreCurrent = true)]
                [fastCSharp.emit.jsonParse.member(IsIgnoreCurrent = true)]
                public int Ret;
                public int Return
                {
                    get { return(Ret); }
                    set { Ret = value; }
                }
#if NOJIT
                public object ReturnObject
                {
                    get { return(Ret); }
                    set { Ret = (int)value; }
                }
#endif
            }
            private void _M1(socket socket, ref subArray <byte> data)
            {
                fastCSharp.net.returnValue.type returnType = fastCSharp.net.returnValue.type.Unknown;
                try
                {
                    _i1 inputParameter = new _i1();
                    if ((socket.Flags & fastCSharp.net.tcp.commandServer.commandFlags.JsonSerialize) == 0 ? fastCSharp.emit.dataDeSerializer.DeSerialize(ref data, ref inputParameter) : fastCSharp.code.cSharp.tcpBase.JsonDeSerialize(ref inputParameter, ref data))
                    {
                        _o1 outputParameter = new _o1();
                        Func <fastCSharp.net.returnValue <int>, bool> callbackReturn = fastCSharp.net.tcp.commandServer.socket.callback <_o1, int> .Get(socket, ref outputParameter, 0);

                        if (callbackReturn != null)
                        {
                            _value_.xor(inputParameter.left, inputParameter.right, callbackReturn);
                        }
                        return;
                    }
                    returnType = fastCSharp.net.returnValue.type.ServerDeSerializeError;
                }
                catch (Exception error)
                {
                    returnType = fastCSharp.net.returnValue.type.ServerException;
                    fastCSharp.log.Error.Add(error, null, true);
                }
                socket.SendStream(socket.Identity, returnType);
            }
        }
        /// <summary>
        /// TCP负载均衡服务
        /// </summary>
        public sealed class tcpLoadBalancing : fastCSharp.net.tcp.commandLoadBalancingServer <tcpClient>
        {
            /// <summary>
            /// TCP负载均衡服务
            /// </summary>
            /// <param name="attribute">TCP调用服务器端配置信息</param>
            /// <param name="verify">TCP验证实例</param>
#if NOJIT
            public tcpLoadBalancing(fastCSharp.code.cSharp.tcpServer attribute = null, fastCSharp.code.cSharp.tcpBase.ITcpClientVerify verify = null)
#else
            public tcpLoadBalancing(fastCSharp.code.cSharp.tcpServer attribute = null, fastCSharp.code.cSharp.tcpBase.ITcpClientVerify verify = null)
#endif
                : base(attribute ?? fastCSharp.code.cSharp.tcpServer.GetConfig("loadBalancingTestLoadBalancing", typeof(fastCSharp.demo.loadBalancingTcpCommand.server)), verify)
            {
            }

            protected override tcpClient _createClient_(fastCSharp.code.cSharp.tcpServer attribute)
            {
                tcpClient client = new tcpClient(attribute, _verify_);

                fastCSharp.net.tcp.commandClient commandClient = client.TcpCommandClient;
                if (commandClient != null && commandClient.StreamSocket != null)
                {
                    return(client);
                }
                fastCSharp.pub.Dispose(ref client);
                return(null);
            }

            protected override DateTime _loadBalancingCheckTime_(tcpClient client)
            {
                fastCSharp.net.tcp.commandClient tcpClient = client.TcpCommandClient;
                return(tcpClient != null ? tcpClient.LoadBalancingCheckTime : DateTime.MinValue);
            }

            protected override fastCSharp.net.returnValue.type _loadBalancingCheck_(tcpClient client)
            {
                fastCSharp.net.tcp.commandClient tcpClient = client.TcpCommandClient;
                return(tcpClient == null ? fastCSharp.net.returnValue.type.ClientDisposed : tcpClient.LoadBalancingCheck());
            }

            public fastCSharp.net.returnValue <int> add(int left, int right)
            {
                fastCSharp.net.returnValue.type _returnType_;
                _returnType_ = fastCSharp.net.returnValue.type.Unknown;
                int _tryCount_ = 3;

                do
                {
                    clientIdentity _client_ = _getClient_();
                    if (_client_.Client == null)
                    {
                        _returnType_ = fastCSharp.net.returnValue.type.ClientDisposed;
                        break;
                    }
                    try
                    {
                        fastCSharp.net.returnValue <int> _return_ = _client_.Client.add(left, right);
                        _end_(ref _client_, _return_.Type);
                        if (_return_.Type == fastCSharp.net.returnValue.type.Success || _return_.Type == fastCSharp.net.returnValue.type.VersionExpired)
                        {
                            return(_return_);
                        }
                        System.Threading.Thread.Sleep(1);
                    }
                    catch (Exception _error_)
                    {
                        _end_(ref _client_, _returnType_ = fastCSharp.net.returnValue.type.ClientException);
                        fastCSharp.log.Error.Add(_error_, null, false);
                    }
                }while (--_tryCount_ > 0);
                return(new fastCSharp.net.returnValue <int> {
                    Type = _returnType_
                });
            }

            sealed class _l1 : fastCSharp.code.cSharp.tcpBase.loadBalancingCallback <int>
            {
                private clientIdentity _client_;
                private tcpLoadBalancing _loadBalancingServer_;
                private int left;
                private int right;
                protected override void _call_()
                {
                    fastCSharp.net.returnValue.type _returnType_;
                    try
                    {
                        _client_ = _loadBalancingServer_._getClient_();
                        if (_client_.Client != null)
                        {
                            _client_.Client.xor(left, right, _onReturnHandle_);
                            return;
                        }
                        _returnType_ = fastCSharp.net.returnValue.type.ClientDisposed;
                    }
                    catch (Exception error)
                    {
                        _loadBalancingServer_._end_(ref _client_, _returnType_ = fastCSharp.net.returnValue.type.ClientException);
                        fastCSharp.log.Error.Add(error, null, false);
                    }
                    _push_(new fastCSharp.net.returnValue <int> {
                        Type = _returnType_
                    });
                }

                protected override void _push_(fastCSharp.net.returnValue.type isReturn)
                {
                    _loadBalancingServer_._end_(ref _client_, isReturn);
                    _loadBalancingServer_ = null;
                    left  = default(int);
                    right = default(int);
                    fastCSharp.typePool <_l1> .PushNotNull(this);
                }

                public static void _Call_(tcpLoadBalancing _loadBalancingServer_,
                                          int left, int right, Action <fastCSharp.net.returnValue <int> > _onReturn_)
                {
                    _l1 _callback_ = fastCSharp.typePool <_l1> .Pop();

                    if (_callback_ == null)
                    {
                        try
                        {
                            _callback_ = new _l1();
                        }
                        catch (Exception error)
                        {
                            fastCSharp.log.Error.Add(error, null, false);
                            _onReturn_(new fastCSharp.net.returnValue <int> {
                                Type = fastCSharp.net.returnValue.type.ClientException
                            });
                            return;
                        }
                    }
                    _callback_.left  = left;
                    _callback_.right = right;
                    _callback_._loadBalancingServer_ = _loadBalancingServer_;
                    _callback_._onReturn_            = _onReturn_;
                    _callback_._tryCount_            = 3;
                    _callback_._call_();
                }
            }
            public void xor(int left, int right, Action <fastCSharp.net.returnValue <int> > _onReturn_)
            {
                _l1 /**/._Call_(this, left, right, _onReturn_);
            }
        }
            private void _M0(socket socket, ref subArray <byte> data)
            {
                fastCSharp.net.returnValue.type returnType = fastCSharp.net.returnValue.type.Unknown;
                try
                {
                    _i0 inputParameter = new _i0();
                    if ((socket.Flags & fastCSharp.net.tcp.commandServer.commandFlags.JsonSerialize) == 0 ? fastCSharp.emit.dataDeSerializer.DeSerialize(ref data, ref inputParameter) : fastCSharp.code.cSharp.tcpBase.JsonDeSerialize(ref inputParameter, ref data))
                    {
                        _s0 /**/.Call(socket, _value_, ref inputParameter);
                        return;
                    }
                    returnType = fastCSharp.net.returnValue.type.ServerDeSerializeError;
                }
                catch (Exception error)
                {
                    returnType = fastCSharp.net.returnValue.type.ServerException;
                    fastCSharp.log.Error.Add(error, null, true);
                }
                socket.SendStream(socket.Identity, returnType);
            }

            sealed class _s1 : fastCSharp.net.tcp.commandServer.serverCall <_s1, fastCSharp.demo.chatServer.server>
            {
                private void get(ref fastCSharp.net.returnValue value)
                {
                    try
                    {
                        serverValue.logout(socket);

                        value.Type = fastCSharp.net.returnValue.type.Success;
                    }
                    catch (Exception error)
                    {
                        value.Type = fastCSharp.net.returnValue.type.ServerException;
                        fastCSharp.log.Error.Add(error, null, true);
                    }
                }

                public override void Call()
                {
                    fastCSharp.net.returnValue value = new fastCSharp.net.returnValue();
                    if (isVerify == 0)
                    {
                        get(ref value);
                        socket.SendStream(ref identity, ref value, flags);
                    }
                    fastCSharp.typePool <_s1> .PushNotNull(this);
                }
            }
            private void _M1(socket socket, ref subArray <byte> data)
            {
                fastCSharp.net.returnValue.type returnType = fastCSharp.net.returnValue.type.Unknown;
                try
                {
                    {
                        _s1 /**/.Call(socket, _value_);
                        return;
                    }
                }
                catch (Exception error)
                {
                    returnType = fastCSharp.net.returnValue.type.ServerException;
                    fastCSharp.log.Error.Add(error, null, true);
                }
                socket.SendStream(socket.Identity, returnType);
            }