/// <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)); }
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)); }