mirror of
https://github.com/logos-storage/logos-storage-nim.git
synced 2026-01-15 20:03:09 +00:00
Removes circular dependency from blockstoremanager to config
This commit is contained in:
parent
cc97010898
commit
63d7647635
@ -26,7 +26,6 @@ import ./conf
|
||||
import ./rng
|
||||
import ./rest/api
|
||||
import ./stores
|
||||
import ./stores/blockstoremanager
|
||||
import ./blockexchange
|
||||
import ./utils/fileutils
|
||||
import ./erasure
|
||||
@ -178,7 +177,13 @@ proc new*(T: type CodexServer, config: CodexConf, privateKey: CodexPrivateKey):
|
||||
wallet = WalletRef.new(EthPrivateKey.random())
|
||||
network = BlockExcNetwork.new(switch)
|
||||
|
||||
blockStoreManager = BlockStoreManager.new(config)
|
||||
blockStoreManager = BlockStoreManager.new(BlockStoreManagerConfig(
|
||||
dataDir: config.dataDir,
|
||||
storageQuota: config.storageQuota,
|
||||
blockTtlSeconds: config.blockTtlSeconds,
|
||||
blockMaintenanceIntervalSeconds: config.blockMaintenanceIntervalSeconds,
|
||||
blockMaintenanceNumberOfBlocks: config.blockMaintenanceNumberOfBlocks,
|
||||
cacheSize: config.cacheSize))
|
||||
blockStore = blockStoreManager.getBlockStore()
|
||||
|
||||
peerStore = PeerCtxStore.new()
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
import ./stores/blockstoremanager
|
||||
import ./stores/cachestore
|
||||
import ./stores/blockstore
|
||||
import ./stores/networkstore
|
||||
@ -6,4 +7,4 @@ import ./stores/memorystore
|
||||
import ./stores/maintenance
|
||||
import ./stores/keyutils
|
||||
|
||||
export cachestore, blockstore, networkstore, repostore, memorystore, maintenance, keyutils
|
||||
export blockstoremanager, cachestore, blockstore, networkstore, repostore, memorystore, maintenance, keyutils
|
||||
|
||||
@ -16,7 +16,6 @@ import pkg/confutils/defs
|
||||
|
||||
|
||||
import ../namespaces
|
||||
import ../conf
|
||||
import ../consts
|
||||
import ./blockstore
|
||||
import ./repostore
|
||||
@ -28,6 +27,13 @@ type
|
||||
repoStore: RepoStore
|
||||
maintenance: BlockMaintainer
|
||||
blockStore: BlockStore
|
||||
BlockStoreManagerConfig* = ref object
|
||||
dataDir*: OutDir
|
||||
storageQuota*: Natural
|
||||
blockTtlSeconds*: int
|
||||
blockMaintenanceIntervalSeconds*: int
|
||||
blockMaintenanceNumberOfBlocks*: int
|
||||
cacheSize*: Natural
|
||||
|
||||
proc start*(self: BlockStoreManager): Future[void] {.async.} =
|
||||
await self.repoStore.start()
|
||||
@ -40,25 +46,25 @@ proc stop*(self: BlockStoreManager): Future[void] {.async.} =
|
||||
proc getBlockStore*(self: BlockStoreManager): BlockStore =
|
||||
self.blockStore
|
||||
|
||||
proc createRepoStore(config: CodexConf): RepoStore =
|
||||
proc createRepoStore(config: BlockStoreManagerConfig): RepoStore =
|
||||
RepoStore.new(
|
||||
repoDs = Datastore(FSDatastore.new($config.dataDir, depth = 5).expect("Should create repo data store!")),
|
||||
metaDs = SQLiteDatastore.new(config.dataDir / CodexMetaNamespace).expect("Should create meta data store!"),
|
||||
quotaMaxBytes = config.storageQuota.uint,
|
||||
blockTtl = config.blockTtlSeconds.seconds)
|
||||
|
||||
proc createMaintenance(repoStore: RepoStore, config: CodexConf): BlockMaintainer =
|
||||
proc createMaintenance(repoStore: RepoStore, config: BlockStoreManagerConfig): BlockMaintainer =
|
||||
BlockMaintainer.new(
|
||||
repoStore,
|
||||
interval = config.blockMaintenanceIntervalSeconds.seconds,
|
||||
numberOfBlocksPerInterval = config.blockMaintenanceNumberOfBlocks)
|
||||
|
||||
proc getBlockStore(repoStore: RepoStore, config: CodexConf): BlockStore =
|
||||
proc getBlockStore(repoStore: RepoStore, config: BlockStoreManagerConfig): BlockStore =
|
||||
if config.cacheSize > 0:
|
||||
return CacheStore.new(backingStore = repoStore, cacheSize = config.cacheSize * MiB)
|
||||
return repoStore
|
||||
|
||||
proc new*(T: type BlockStoreManager, config: CodexConf): T =
|
||||
proc new*(T: type BlockStoreManager, config: BlockStoreManagerConfig): T =
|
||||
let
|
||||
repoStore = createRepoStore(config)
|
||||
maintenance = createMaintenance(repoStore, config)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user