Exemplo n.º 1
0
        private bool TryChangeConnectionState(
            ClickHouseConnectionState state,
            ConnectionState newState,
            ClickHouseTcpClient?client,
            out ClickHouseConnectionState actualState,
            [NotNullWhen(true)] out Func <ClickHouseConnection, Exception?>?onStateChanged)
        {
            var counter   = state.State != ConnectionState.Connecting && newState == ConnectionState.Connecting ? unchecked (state.Counter + 1) : state.Counter;
            var nextState = new ClickHouseConnectionState(newState, client, state.Settings, counter);

            if (TryChangeConnectionState(state, nextState, out actualState))
            {
                onStateChanged = CreateConnectionStateChangedCallback(state.State, actualState.State);
                return(true);
            }

            onStateChanged = null;
            return(false);
        }
Exemplo n.º 2
0
        private bool TryChangeConnectionState(ClickHouseConnectionState from, ClickHouseConnectionState to, out ClickHouseConnectionState actualState)
        {
            actualState = Interlocked.CompareExchange(ref _connectionState, to, from);
            if (ReferenceEquals(actualState, from))
            {
                actualState = to;
                return(true);
            }

            return(false);
        }
Exemplo n.º 3
0
 /// <summary>
 /// Initializes a new instance of <see cref="ClickHouseConnection"/> class.
 /// </summary>
 public ClickHouseConnection()
 {
     _connectionState = new ClickHouseConnectionState();
 }