drone/lock/wire.go

41 lines
1.0 KiB
Go

// Copyright 2022 Harness Inc. All rights reserved.
// Use of this source code is governed by the Polyform Free Trial License
// that can be found in the LICENSE.md file for this repository.
package lock
import (
"github.com/harness/gitness/types"
"github.com/go-redis/redis/v8"
"github.com/google/wire"
)
var WireSet = wire.NewSet(
ProvideConfig,
ProvideMutexManager,
)
func ProvideConfig(config *types.Config) Config {
return Config{
app: config.Lock.AppNamespace,
namespace: config.Lock.DefaultNamespace,
provider: Provider(config.Lock.Provider),
expiry: config.Lock.Expiry,
tries: config.Lock.Tries,
retryDelay: config.Lock.RetryDelay,
driftFactor: config.Lock.DriftFactor,
timeoutFactor: config.Lock.TimeoutFactor,
}
}
func ProvideMutexManager(config Config, client redis.UniversalClient) MutexManager {
switch config.provider {
case MemoryProvider:
return NewInMemory(config)
case RedisProvider:
return NewRedis(config, client)
}
return nil
}