/// <summary> /// Factory method for constructing a new Session, creating a new session to QLDB on construction. /// </summary> /// /// <param name="ledgerName">The name of the ledger to create a session to.</param> /// <param name="sessionClient">The low-level session used for communication with QLDB.</param> /// <param name="logger">The logger to inject any logging framework.</param> /// /// <returns>A newly created <see cref="Session"/>.</returns> internal static Session StartSession(string ledgerName, AmazonQLDBSessionClient sessionClient, ILogger logger) { var startSessionRequest = new StartSessionRequest { LedgerName = ledgerName, }; var request = new SendCommandRequest { StartSession = startSessionRequest, }; logger.LogDebug("Sending start session request: {}", request); var response = sessionClient.SendCommandAsync(request).GetAwaiter().GetResult(); return(new Session( ledgerName, sessionClient, response.StartSession.SessionToken, response.ResponseMetadata.RequestId, logger)); }
/// <summary> /// Factory method for constructing a new Session, creating a new session to QLDB on construction. /// </summary> /// /// <param name="ledgerName">The name of the ledger to create a session to.</param> /// <param name="sessionClient">The low-level session used for communication with QLDB.</param> /// <param name="logger">The logger to inject any logging framework.</param> /// <param name="cancellationToken"> /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// </param> /// /// <returns>A newly created <see cref="Session"/>.</returns> internal static async Task <Session> StartSession(string ledgerName, AmazonQLDBSessionClient sessionClient, ILogger logger, CancellationToken cancellationToken = default) { var startSessionRequest = new StartSessionRequest { LedgerName = ledgerName, }; var request = new SendCommandRequest { StartSession = startSessionRequest, }; logger.LogDebug("Sending start session request: {}", request); var response = await sessionClient.SendCommandAsync(request, cancellationToken); return(new Session( ledgerName, sessionClient, response.StartSession.SessionToken, response.ResponseMetadata.RequestId, logger)); }