def get_chaindb_manager(trinity_config: TrinityConfig, base_db: BaseAtomicDB) -> BaseManager: chain_config = trinity_config.get_chain_config() chaindb = AsyncChainDB(base_db) if not is_database_initialized(chaindb): initialize_database(chain_config, chaindb, base_db) headerdb = AsyncHeaderDB(base_db) class DBManager(BaseManager): pass DBManager.register('get_db', callable=lambda: TracebackRecorder(base_db), proxytype=DBProxy) DBManager.register( 'get_chaindb', callable=lambda: TracebackRecorder(chaindb), proxytype=ChainDBProxy, ) DBManager.register( 'get_headerdb', callable=lambda: TracebackRecorder(headerdb), proxytype=AsyncHeaderDBProxy, ) manager = DBManager(address=str( trinity_config.database_ipc_path)) # type: ignore return manager
def get_chaindb_manager(trinity_config: TrinityConfig, base_db: BaseAtomicDB) -> BaseManager: chaindb = AsyncChainDB(base_db) if not is_database_initialized(chaindb): initialize_database(trinity_config, chaindb) chain_class: Type[BaseChain] chain: BaseChain if trinity_config.network_id == MAINNET_NETWORK_ID: chain_class = MainnetChain chain = chain_class(base_db) elif trinity_config.network_id == ROPSTEN_NETWORK_ID: chain_class = RopstenChain chain = chain_class(base_db) else: raise NotImplementedError( "Only the ropsten and mainnet chains are supported") headerdb = AsyncHeaderDB(base_db) header_chain = AsyncHeaderChain(base_db) class DBManager(BaseManager): pass # Typeshed definitions for multiprocessing.managers is incomplete, so ignore them for now: # https://github.com/python/typeshed/blob/85a788dbcaa5e9e9a62e55f15d44530cd28ba830/stdlib/3/multiprocessing/managers.pyi#L3 DBManager.register( # type: ignore 'get_db', callable=lambda: TracebackRecorder(base_db), proxytype=DBProxy) DBManager.register( # type: ignore 'get_chaindb', callable=lambda: TracebackRecorder(chaindb), proxytype=ChainDBProxy, ) DBManager.register( # type: ignore 'get_chain', callable=lambda: TracebackRecorder(chain), proxytype=ChainProxy) DBManager.register( # type: ignore 'get_headerdb', callable=lambda: TracebackRecorder(headerdb), proxytype=AsyncHeaderDBProxy, ) DBManager.register( # type: ignore 'get_header_chain', callable=lambda: TracebackRecorder(header_chain), proxytype=AsyncHeaderChainProxy, ) manager = DBManager(address=str( trinity_config.database_ipc_path)) # type: ignore return manager
def get_chaindb_manager(trinity_config: TrinityConfig, base_db: BaseAtomicDB) -> BaseManager: chaindb = AsyncChainDB(base_db) if not is_database_initialized(chaindb): initialize_database(trinity_config, chaindb) chain_class: Type[BaseChain] chain: BaseChain if trinity_config.network_id == MAINNET_NETWORK_ID: chain_class = MainnetChain chain = chain_class(base_db) elif trinity_config.network_id == ROPSTEN_NETWORK_ID: chain_class = RopstenChain chain = chain_class(base_db) else: raise NotImplementedError( "Only the ropsten and mainnet chains are supported") headerdb = AsyncHeaderDB(base_db) header_chain = AsyncHeaderChain(base_db) class DBManager(BaseManager): pass DBManager.register('get_db', callable=lambda: TracebackRecorder(base_db), proxytype=DBProxy) DBManager.register( 'get_chaindb', callable=lambda: TracebackRecorder(chaindb), proxytype=ChainDBProxy, ) DBManager.register('get_chain', callable=lambda: TracebackRecorder(chain), proxytype=ChainProxy) DBManager.register( 'get_headerdb', callable=lambda: TracebackRecorder(headerdb), proxytype=AsyncHeaderDBProxy, ) DBManager.register( 'get_header_chain', callable=lambda: TracebackRecorder(header_chain), proxytype=AsyncHeaderChainProxy, ) manager = DBManager(address=str( trinity_config.database_ipc_path)) # type: ignore return manager
def serve_chaindb(chain_config: ChainConfig, base_db: BaseDB) -> None: chaindb = AsyncChainDB(base_db) if not is_database_initialized(chaindb): initialize_database(chain_config, chaindb) if chain_config.network_id == MAINNET_NETWORK_ID: chain_class = MainnetChain # type: ignore elif chain_config.network_id == ROPSTEN_NETWORK_ID: chain_class = RopstenChain # type: ignore else: raise NotImplementedError( "Only the mainnet and ropsten chains are currently supported") chain = chain_class(base_db) # type: ignore headerdb = AsyncHeaderDB(base_db) header_chain = AsyncHeaderChain(base_db) class DBManager(BaseManager): pass # Typeshed definitions for multiprocessing.managers is incomplete, so ignore them for now: # https://github.com/python/typeshed/blob/85a788dbcaa5e9e9a62e55f15d44530cd28ba830/stdlib/3/multiprocessing/managers.pyi#L3 DBManager.register('get_db', callable=lambda: base_db, proxytype=DBProxy) # type: ignore DBManager.register( # type: ignore 'get_chaindb', callable=lambda: chaindb, proxytype=ChainDBProxy, ) DBManager.register('get_chain', callable=lambda: chain, proxytype=ChainProxy) # type: ignore DBManager.register( # type: ignore 'get_headerdb', callable=lambda: headerdb, proxytype=AsyncHeaderDBProxy, ) DBManager.register( # type: ignore 'get_header_chain', callable=lambda: header_chain, proxytype=AsyncHeaderChainProxy, ) manager = DBManager(address=str( chain_config.database_ipc_path)) # type: ignore server = manager.get_server() # type: ignore server.serve_forever() # type: ignore