IPFSNode.fromContainer constructor
- ServiceContainer _container
Creates an IPFSNode from a pre-configured service container.
Throws NodeInitializationError if required services are missing.
Implementation
IPFSNode.fromContainer(this._container) : _logger = Logger('IPFSNode') {
_logger.debug('Creating IPFS Node from container');
// Validate required services
_validateRequiredServices();
// Initialize managers with constructor injection
_contentManager = ContentManager(
datastoreHandler: _container.get<DatastoreHandler>(),
newContentController: _newContentController,
blockStore: _container.get<BlockStore>(),
bitswapHandler: _container.isRegistered(BitswapHandler)
? _container.get<BitswapHandler>()
: null,
denylistService: _container.isRegistered<DenylistService>()
? _container.get<DenylistService>()
: null,
);
_networkManager = NetworkManager(
networkHandler: _container.isRegistered<NetworkHandler>()
? _container.get<NetworkHandler>()
: null,
datastoreHandler: _container.get<DatastoreHandler>(),
dhtHandler: _container.isRegistered<DHTHandler>()
? _container.get<DHTHandler>()
: null,
contentRoutingHandler: _container.isRegistered(ContentRoutingHandler)
? _container.get<ContentRoutingHandler>()
: null,
bitswapHandler: _container.isRegistered(BitswapHandler)
? _container.get<BitswapHandler>()
: null,
);
_protocolManager = ProtocolManager(
pubSubHandler: _container.isRegistered(PubSubHandler)
? _container.get<PubSubHandler>()
: null,
dhtHandler: _container.isRegistered<DHTHandler>()
? _container.get<DHTHandler>()
: null,
contentRoutingHandler: _container.isRegistered(ContentRoutingHandler)
? _container.get<ContentRoutingHandler>()
: null,
);
_mfsManager = MFSManager(
_container.get<BlockStore>(),
_container.get<DatastoreHandler>().datastore,
denylistService: _container.isRegistered<DenylistService>()
? _container.get<DenylistService>()
: null,
);
// Wire up the periodic reprovider when DHT and config are available.
if (_container.isRegistered<DHTHandler>() &&
_container.isRegistered<IPFSConfig>()) {
_reprovider = Reprovider(
config: _container.get<IPFSConfig>().dht,
dhtHandler: _container.get<DHTHandler>(),
pinManager: _container.get<BlockStore>().pinManager,
mfsManager: _mfsManager,
metrics: _container.isRegistered<MetricsCollector>()
? _container.get<MetricsCollector>()
: null,
);
}
_pluginManager = PluginManager(this);
_lifecycleManager = _container.isRegistered<LifecycleManager>()
? _container.get<LifecycleManager>()
: LifecycleManager();
// Register services for lifecycle management
_lifecycleManager.register(_container.get<BlockStore>());
_lifecycleManager.register(_contentManager);
_lifecycleManager.register(_networkManager);
_lifecycleManager.register(_protocolManager);
if (_reprovider != null) {
_lifecycleManager.register(_reprovider!);
}
if (_container.isRegistered<DenylistService>()) {
_lifecycleManager.register(_container.get<DenylistService>());
}
// Set back-references for handlers that need the IPFSNode instance
if (_container.isRegistered<NetworkHandler>()) {
_container.get<NetworkHandler>().setIpfsNode(this);
}
}