コード例 #1
0
        static void SocketHandler(object sender, SocketAsyncEventArgs args)
        {
            AsyncCommand command = args.UserToken as AsyncCommand;

            if (args.SocketError != SocketError.Success)
            {
                command.RetryAfterInit(command.GetAerospikeException(args.SocketError));
                return;
            }

            try
            {
                switch (args.LastOperation)
                {
                case SocketAsyncOperation.Receive:
                    command.ReceiveEvent();
                    break;

                case SocketAsyncOperation.Send:
                    command.SendEvent();
                    break;

                case SocketAsyncOperation.Connect:
                    command.ConnectionCreated();
                    break;

                default:
                    command.FailOnApplicationError(new AerospikeException("Invalid socket operation: " + args.LastOperation));
                    break;
                }
            }
            catch (AerospikeException.Connection ac)
            {
                command.RetryAfterInit(ac);
            }
            catch (AerospikeException ae)
            {
                // Fail without retry on non-network errors.
                command.FailOnApplicationError(ae);
            }
            catch (SocketException se)
            {
                command.RetryAfterInit(command.GetAerospikeException(se.SocketErrorCode));
            }
            catch (ObjectDisposedException ode)
            {
                // This exception occurs because socket is being used after timeout thread closes socket.
                // Retry when this happens.
                command.RetryAfterInit(new AerospikeException(ode));
            }
            catch (Exception e)
            {
                // Fail without retry on unknown errors.
                command.FailOnApplicationError(new AerospikeException(e));
            }
        }
コード例 #2
0
        static void SocketHandler(object sender, SocketAsyncEventArgs args)
        {
            AsyncCommand command = args.UserToken as AsyncCommand;

            if (args.SocketError != SocketError.Success)
            {
                command.RetryAfterInit(GetAerospikeException(args.SocketError));
                return;
            }

            try
            {
                switch (args.LastOperation)
                {
                case SocketAsyncOperation.Receive:
                    command.ReceiveEvent();
                    break;

                case SocketAsyncOperation.Send:
                    command.SendEvent();
                    break;

                case SocketAsyncOperation.Connect:
                    command.ConnectionCreated();
                    break;

                default:
                    command.FailOnApplicationError(new AerospikeException("Invalid socket operation: " + args.LastOperation));
                    break;
                }
            }
            catch (AerospikeException.Connection ac)
            {
                command.RetryAfterInit(ac);
            }
            catch (AerospikeException e)
            {
                // Fail without retry on non-network errors.
                command.FailOnApplicationError(e);
            }
            catch (SocketException se)
            {
                command.RetryAfterInit(GetAerospikeException(se.SocketErrorCode));
            }
            catch (Exception e)
            {
                // Fail without retry on unknown errors.
                command.FailOnApplicationError(new AerospikeException(e));
            }
        }