internal static IDbDistributedLock CreateInternalLock(string name, string connectionString, Action <OracleConnectionOptionsBuilder>?options) { if (connectionString == null) { throw new ArgumentNullException(nameof(connectionString)); } var(keepaliveCadence, useMultiplexing) = OracleConnectionOptionsBuilder.GetOptions(options); if (useMultiplexing) { return(new OptimisticConnectionMultiplexingDbDistributedLock(name, connectionString, OracleMultiplexedConnectionLockPool.Instance, keepaliveCadence)); } return(new DedicatedConnectionOrTransactionDbDistributedLock(name, () => new OracleDatabaseConnection(connectionString), useTransaction: false, keepaliveCadence)); }
internal static (TimeoutValue keepaliveCadence, bool useMultiplexing) GetOptions(Action <OracleConnectionOptionsBuilder>?optionsBuilder) { OracleConnectionOptionsBuilder?options; if (optionsBuilder != null) { options = new OracleConnectionOptionsBuilder(); optionsBuilder(options); } else { options = null; } var keepaliveCadence = options?._keepaliveCadence ?? Timeout.InfiniteTimeSpan; var useMultiplexing = options?._useMultiplexing ?? true; return(keepaliveCadence, useMultiplexing); }