Add "default protocols" that all hosts have by default

This commit is contained in:
Alex Stokes
2019-09-24 17:19:22 -07:00
parent 73251a0c36
commit c92bade815
3 changed files with 20 additions and 5 deletions

View File

@ -1,8 +1,9 @@
import logging
from typing import List, Sequence
from typing import TYPE_CHECKING, List, Sequence
import multiaddr
from libp2p.host.defaults import DEFAULT_HOST_PROTOCOLS
from libp2p.host.exceptions import StreamFailure
from libp2p.network.network_interface import INetwork
from libp2p.network.stream.net_stream_interface import INetStream
@ -17,6 +18,9 @@ from libp2p.typing import StreamHandlerFn, TProtocol
from .host_interface import IHost
if TYPE_CHECKING:
from collections import OrderedDict
# Upon host creation, host takes in options,
# including the list of addresses on which to listen.
# Host then parses these options and delegates to its Network instance,
@ -38,12 +42,16 @@ class BasicHost(IHost):
multiselect: Multiselect
multiselect_client: MultiselectClient
def __init__(self, network: INetwork) -> None:
def __init__(
self,
network: INetwork,
default_protocols: "OrderedDict[TProtocol, StreamHandlerFn]" = DEFAULT_HOST_PROTOCOLS,
) -> None:
self._network = network
self._network.set_stream_handler(self._swarm_stream_handler)
self.peerstore = self._network.peerstore
# Protocol muxing
self.multiselect = Multiselect()
self.multiselect = Multiselect(default_protocols)
self.multiselect_client = MultiselectClient()
def get_id(self) -> ID: