1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use {
    crate::{
        accountsdb_repl_server::{AccountsDbReplService, AccountsDbReplServiceConfig},
        replica_accounts_server::ReplicaAccountsServerImpl,
        replica_confirmed_slots_server::ReplicaSlotConfirmationServerImpl,
    },
    crossbeam_channel::Receiver,
    gemachain_runtime::bank_forks::BankForks,
    gemachain_sdk::clock::Slot,
    std::sync::{Arc, RwLock},
};

pub struct AccountsDbReplServerFactory {}

impl AccountsDbReplServerFactory {
    pub fn build_accountsdb_repl_server(
        config: AccountsDbReplServiceConfig,
        confirmed_bank_receiver: Receiver<Slot>,
        bank_forks: Arc<RwLock<BankForks>>,
    ) -> AccountsDbReplService {
        AccountsDbReplService::new(
            config,
            Arc::new(RwLock::new(ReplicaSlotConfirmationServerImpl::new(
                confirmed_bank_receiver,
            ))),
            Arc::new(RwLock::new(ReplicaAccountsServerImpl::new(bank_forks))),
        )
    }
}