Example #1
0
        /// <summary>
        /// Creates a PooledSession representing a freshly-created session, with no associated transaction.
        /// </summary>
        internal static PooledSession FromSessionName(SessionPool.ISessionPool pool, SessionName sessionName)
        {
            var options       = pool.Options;
            var now           = pool.Clock.GetCurrentDateTimeUtc();
            var refreshDelay  = options.SessionRefreshJitter.GetDelay(options.IdleSessionRefreshDelay);
            var evictionDelay = options.SessionEvictionJitter.GetDelay(options.PoolEvictionDelay);

            return(new PooledSession(pool, sessionName, transactionId: null, ModeOneofCase.None, now + evictionDelay, now.Ticks + refreshDelay.Ticks));
        }
Example #2
0
 private PooledSession(SessionPool.ISessionPool pool, SessionName sessionName, ByteString transactionId, ModeOneofCase transactionMode, DateTime evictionTime, long refreshTicks)
 {
     GaxPreconditions.CheckArgument(
         (transactionId == null) == (transactionMode == ModeOneofCase.None),
         nameof(transactionMode),
         "Transaction mode and ID don't match.");
     _pool           = pool;
     SessionName     = GaxPreconditions.CheckNotNull(sessionName, nameof(sessionName));
     TransactionId   = transactionId;
     TransactionMode = transactionMode;
     _session        = new Session {
         SessionName = SessionName
     };
     _evictionTime = evictionTime;
     _refreshTicks = refreshTicks;
 }
        private PooledSession CreateWithTransaction(SessionPool.ISessionPool pool, TransactionOptions.ModeOneofCase mode)
        {
            ByteString transactionId = ByteString.CopyFromUtf8(Guid.NewGuid().ToString());

            return(PooledSession.FromSessionName(pool, s_sampleSessionName).WithTransaction(transactionId, mode));
        }