public override Task OpenAsync(CancellationToken cancellationToken)
        {
            registerConnectionCancellationCallback(cancellationToken);
            SetSession();

            return(SfSession.OpenAsync(cancellationToken).ContinueWith(
                       previousTask =>
            {
                if (previousTask.IsFaulted)
                {
                    // Exception from SfSession.OpenAsync
                    Exception sfSessionEx = previousTask.Exception;
                    _connectionState = ConnectionState.Closed;
                    logger.Error("Unable to connect", sfSessionEx.InnerException);
                    throw new SnowflakeDbException(sfSessionEx.InnerException,
                                                   SFError.INTERNAL_ERROR,
                                                   "Unable to connect");
                }
                else if (previousTask.IsCanceled)
                {
                    _connectionState = ConnectionState.Closed;
                    logger.Debug("Connection canceled");
                }
                else
                {
                    logger.Debug("All good");
                    // Only continue if the session was opened successfully
                    OnSessionEstablished();
                }
            },
                       cancellationToken));
        }
Ejemplo n.º 2
0
        public override Task OpenAsync(CancellationToken cancellationToken)
        {
            if (cancellationToken.IsCancellationRequested)
            {
                return(Task.FromCanceled(cancellationToken));
            }

            SetSession();
            return(SfSession.OpenAsync(cancellationToken).ContinueWith(t => OnSessionEstablished(), cancellationToken));
        }