/// <summary> /// Releases the connection. /// </summary> /// <param name="request">The request.</param> /// <returns>The response.</returns> private static ReleaseConnectionServiceResponse ReleaseConnection(ReleaseConnectionServiceRequest request) { SqliteDatabaseProvider databaseProvider = DatabaseConnectionManagementService.GetDatabaseProvider(request.RequestContext); bool released = databaseProvider.ReleaseConnection(request.ConnectionString); return(new ReleaseConnectionServiceResponse(released)); }
/// <summary> /// Releases connections associated with a connection string from underlying database provider. /// </summary> /// <param name="connectionString">Connection string to release.</param> /// <returns>True if the connections are released otherwise false.</returns> private bool ReleaseConnectionString(string connectionString) { TimeSpan timeout = TimeSpan.FromMinutes(1); TimeSpan interval = TimeSpan.FromSeconds(10); DateTime started = DateTime.UtcNow; bool released; var request = new ReleaseConnectionServiceRequest(connectionString); while (!(released = this.ReleaseConnection(request))) { Task.Delay(interval).Wait(); if (started + timeout <= DateTime.UtcNow) { break; } } return(released); }
/// <summary> /// Releases the connection. /// </summary> /// <param name="request">The request.</param> /// <returns>True if the connections are released otherwise false.</returns> private bool ReleaseConnection(ReleaseConnectionServiceRequest request) { return(this.Context.Runtime.Execute <ReleaseConnectionServiceResponse>(request, this.Context).Released); }