Apply PR feedback: fix type hints
This commit is contained in:
parent
2d4e23cfe2
commit
e53727d301
|
@ -1,17 +1,17 @@
|
||||||
from typing import (
|
from typing import (
|
||||||
Any,
|
Any,
|
||||||
|
Awaitable,
|
||||||
Callable,
|
Callable,
|
||||||
Coroutine,
|
|
||||||
List,
|
List,
|
||||||
Sequence,
|
Sequence,
|
||||||
)
|
)
|
||||||
|
|
||||||
import multiaddr
|
import multiaddr
|
||||||
|
|
||||||
from libp2p.network.swarm import Swarm
|
from libp2p.network.network_interface import INetwork
|
||||||
from libp2p.peer.id import ID
|
from libp2p.peer.id import ID
|
||||||
from libp2p.peer.peerinfo import PeerInfo
|
from libp2p.peer.peerinfo import PeerInfo
|
||||||
from libp2p.peer.peerstore import PeerStore
|
from libp2p.peer.peerstore_interface import IPeerStore
|
||||||
|
|
||||||
from libp2p.network.stream.net_stream_interface import INetStream
|
from libp2p.network.stream.net_stream_interface import INetStream
|
||||||
from libp2p.routing.kademlia.kademlia_peer_router import KadmeliaPeerRouter
|
from libp2p.routing.kademlia.kademlia_peer_router import KadmeliaPeerRouter
|
||||||
|
@ -24,17 +24,17 @@ from .host_interface import IHost
|
||||||
# telling it to listen on the given listen addresses.
|
# telling it to listen on the given listen addresses.
|
||||||
|
|
||||||
|
|
||||||
StreamHandlerFn = Callable[[INetStream], Coroutine[Any, Any, None]]
|
StreamHandlerFn = Callable[[INetStream], Awaitable[None]]
|
||||||
|
|
||||||
|
|
||||||
class BasicHost(IHost):
|
class BasicHost(IHost):
|
||||||
|
|
||||||
_network: Swarm
|
_network: INetwork
|
||||||
router: KadmeliaPeerRouter
|
router: KadmeliaPeerRouter
|
||||||
peerstore: PeerStore
|
peerstore: IPeerStore
|
||||||
|
|
||||||
# default options constructor
|
# default options constructor
|
||||||
def __init__(self, network: Swarm, router: KadmeliaPeerRouter = None) -> None:
|
def __init__(self, network: INetwork, router: KadmeliaPeerRouter = None) -> None:
|
||||||
self._network = network
|
self._network = network
|
||||||
self._router = router
|
self._router = router
|
||||||
self.peerstore = self._network.peerstore
|
self.peerstore = self._network.peerstore
|
||||||
|
@ -45,13 +45,13 @@ class BasicHost(IHost):
|
||||||
"""
|
"""
|
||||||
return self._network.get_peer_id()
|
return self._network.get_peer_id()
|
||||||
|
|
||||||
def get_network(self) -> Swarm:
|
def get_network(self) -> INetwork:
|
||||||
"""
|
"""
|
||||||
:return: network instance of host
|
:return: network instance of host
|
||||||
"""
|
"""
|
||||||
return self._network
|
return self._network
|
||||||
|
|
||||||
def get_peerstore(self) -> PeerStore:
|
def get_peerstore(self) -> IPeerStore:
|
||||||
"""
|
"""
|
||||||
:return: peerstore of the host (same one as in its network instance)
|
:return: peerstore of the host (same one as in its network instance)
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -1,22 +1,22 @@
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from typing import (
|
from typing import (
|
||||||
Any,
|
Any,
|
||||||
|
Awaitable,
|
||||||
Callable,
|
Callable,
|
||||||
Coroutine,
|
|
||||||
List,
|
List,
|
||||||
Sequence,
|
Sequence,
|
||||||
)
|
)
|
||||||
|
|
||||||
import multiaddr
|
import multiaddr
|
||||||
|
|
||||||
from libp2p.network.swarm import Swarm
|
from libp2p.network.network_interface import INetwork
|
||||||
from libp2p.peer.id import ID
|
from libp2p.peer.id import ID
|
||||||
from libp2p.peer.peerinfo import PeerInfo
|
from libp2p.peer.peerinfo import PeerInfo
|
||||||
|
|
||||||
from libp2p.network.stream.net_stream_interface import INetStream
|
from libp2p.network.stream.net_stream_interface import INetStream
|
||||||
|
|
||||||
|
|
||||||
StreamHandlerFn = Callable[[INetStream], Coroutine[Any, Any, None]]
|
StreamHandlerFn = Callable[[INetStream], Awaitable[None]]
|
||||||
|
|
||||||
|
|
||||||
class IHost(ABC):
|
class IHost(ABC):
|
||||||
|
@ -28,7 +28,7 @@ class IHost(ABC):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def get_network(self) -> Swarm:
|
def get_network(self) -> INetwork:
|
||||||
"""
|
"""
|
||||||
:return: network instance of host
|
:return: network instance of host
|
||||||
"""
|
"""
|
||||||
|
@ -58,9 +58,9 @@ class IHost(ABC):
|
||||||
# protocol_id can be a list of protocol_ids
|
# protocol_id can be a list of protocol_ids
|
||||||
# stream will decide which protocol_id to run on
|
# stream will decide which protocol_id to run on
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def new_stream(self,
|
async def new_stream(self,
|
||||||
peer_id: ID,
|
peer_id: ID,
|
||||||
protocol_ids: Sequence[str]) -> Coroutine[Any, Any, INetStream]:
|
protocol_ids: Sequence[str]) -> INetStream:
|
||||||
"""
|
"""
|
||||||
:param peer_id: peer_id that host is connecting
|
:param peer_id: peer_id that host is connecting
|
||||||
:param protocol_ids: protocol ids that stream can run on
|
:param protocol_ids: protocol ids that stream can run on
|
||||||
|
@ -68,7 +68,7 @@ class IHost(ABC):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def connect(self, peer_info: PeerInfo) -> Coroutine[Any, Any, None]:
|
async def connect(self, peer_info: PeerInfo) -> None:
|
||||||
"""
|
"""
|
||||||
connect ensures there is a connection between this host and the peer with
|
connect ensures there is a connection between this host and the peer with
|
||||||
given peer_info.peer_id. connect will absorb the addresses in peer_info into its internal
|
given peer_info.peer_id. connect will absorb the addresses in peer_info into its internal
|
||||||
|
|
|
@ -4,8 +4,9 @@ from abc import (
|
||||||
)
|
)
|
||||||
from typing import (
|
from typing import (
|
||||||
Any,
|
Any,
|
||||||
|
Awaitable,
|
||||||
Callable,
|
Callable,
|
||||||
Coroutine,
|
Dict,
|
||||||
Sequence,
|
Sequence,
|
||||||
TYPE_CHECKING,
|
TYPE_CHECKING,
|
||||||
)
|
)
|
||||||
|
@ -13,19 +14,25 @@ from typing import (
|
||||||
from multiaddr import Multiaddr
|
from multiaddr import Multiaddr
|
||||||
|
|
||||||
from libp2p.peer.id import ID
|
from libp2p.peer.id import ID
|
||||||
|
from libp2p.peer.peerstore import PeerStore
|
||||||
from libp2p.stream_muxer.muxed_connection_interface import IMuxedConn
|
from libp2p.stream_muxer.muxed_connection_interface import IMuxedConn
|
||||||
|
from libp2p.transport.listener_interface import IListener
|
||||||
|
|
||||||
from .stream.net_stream import NetStream
|
from .stream.net_stream_interface import INetStream
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from .notifee_interface import INotifee
|
from .notifee_interface import INotifee
|
||||||
|
|
||||||
|
|
||||||
StreamHandlerFn = Callable[[NetStream], Coroutine[Any, Any, None]]
|
StreamHandlerFn = Callable[[INetStream], Awaitable[None]]
|
||||||
|
|
||||||
|
|
||||||
class INetwork(ABC):
|
class INetwork(ABC):
|
||||||
|
|
||||||
|
peerstore: PeerStore
|
||||||
|
connections: Dict[ID, IMuxedConn]
|
||||||
|
listeners: Dict[str, IListener]
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def get_peer_id(self) -> ID:
|
def get_peer_id(self) -> ID:
|
||||||
"""
|
"""
|
||||||
|
@ -33,7 +40,7 @@ class INetwork(ABC):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def dial_peer(self, peer_id: ID) -> Coroutine[Any, Any, IMuxedConn]:
|
async def dial_peer(self, peer_id: ID) -> IMuxedConn:
|
||||||
"""
|
"""
|
||||||
dial_peer try to create a connection to peer_id
|
dial_peer try to create a connection to peer_id
|
||||||
|
|
||||||
|
@ -51,9 +58,9 @@ class INetwork(ABC):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def new_stream(self,
|
async def new_stream(self,
|
||||||
peer_id: ID,
|
peer_id: ID,
|
||||||
protocol_ids: Sequence[str]) -> Coroutine[Any, Any, NetStream]:
|
protocol_ids: Sequence[str]) -> INetStream:
|
||||||
"""
|
"""
|
||||||
:param peer_id: peer_id of destination
|
:param peer_id: peer_id of destination
|
||||||
:param protocol_ids: available protocol ids to use for stream
|
:param protocol_ids: available protocol ids to use for stream
|
||||||
|
@ -61,7 +68,7 @@ class INetwork(ABC):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def listen(self, *args: Multiaddr) -> Coroutine[Any, Any, bool]:
|
async def listen(self, *args: Multiaddr) -> bool:
|
||||||
"""
|
"""
|
||||||
:param *args: one or many multiaddrs to start listening on
|
:param *args: one or many multiaddrs to start listening on
|
||||||
:return: True if at least one success
|
:return: True if at least one success
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
from libp2p.stream_muxer.mplex.mplex import Mplex
|
from libp2p.stream_muxer.muxed_connection_interface import IMuxedConn
|
||||||
from libp2p.stream_muxer.mplex.mplex_stream import MplexStream
|
from libp2p.stream_muxer.muxed_stream_interface import IMuxedStream
|
||||||
|
|
||||||
from .net_stream_interface import INetStream
|
from .net_stream_interface import INetStream
|
||||||
|
|
||||||
|
|
||||||
class NetStream(INetStream):
|
class NetStream(INetStream):
|
||||||
|
|
||||||
muxed_stream: MplexStream
|
muxed_stream: IMuxedStream
|
||||||
mplex_conn: Mplex
|
mplex_conn: IMuxedConn
|
||||||
protocol_id: str
|
protocol_id: str
|
||||||
|
|
||||||
def __init__(self, muxed_stream: MplexStream) -> None:
|
def __init__(self, muxed_stream: IMuxedStream) -> None:
|
||||||
self.muxed_stream = muxed_stream
|
self.muxed_stream = muxed_stream
|
||||||
self.mplex_conn = muxed_stream.mplex_conn
|
self.mplex_conn = muxed_stream.mplex_conn
|
||||||
self.protocol_id = None
|
self.protocol_id = None
|
||||||
|
|
|
@ -1,15 +1,14 @@
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from typing import (
|
from typing import (
|
||||||
Any,
|
Any,
|
||||||
Coroutine,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
from libp2p.stream_muxer.mplex.mplex import Mplex
|
from libp2p.stream_muxer.muxed_connection_interface import IMuxedConn
|
||||||
|
|
||||||
|
|
||||||
class INetStream(ABC):
|
class INetStream(ABC):
|
||||||
|
|
||||||
mplex_conn: Mplex
|
mplex_conn: IMuxedConn
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def get_protocol(self) -> str:
|
def get_protocol(self) -> str:
|
||||||
|
@ -25,21 +24,21 @@ class INetStream(ABC):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def read(self) -> Coroutine[Any, Any, bytes]:
|
async def read(self) -> bytes:
|
||||||
"""
|
"""
|
||||||
reads from the underlying muxed_stream
|
reads from the underlying muxed_stream
|
||||||
:return: bytes of input
|
:return: bytes of input
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def write(self, data: bytes) -> Coroutine[Any, Any, int]:
|
async def write(self, data: bytes) -> int:
|
||||||
"""
|
"""
|
||||||
write to the underlying muxed_stream
|
write to the underlying muxed_stream
|
||||||
:return: number of bytes written
|
:return: number of bytes written
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def close(self) -> Coroutine[Any, Any, bool]:
|
async def close(self) -> bool:
|
||||||
"""
|
"""
|
||||||
close the underlying muxed stream
|
close the underlying muxed stream
|
||||||
:return: true if successful
|
:return: true if successful
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
from typing import (
|
from typing import (
|
||||||
Any,
|
Any,
|
||||||
|
Awaitable,
|
||||||
Callable,
|
Callable,
|
||||||
Coroutine,
|
|
||||||
Dict,
|
Dict,
|
||||||
List,
|
List,
|
||||||
Sequence,
|
Sequence,
|
||||||
|
@ -18,10 +18,10 @@ from libp2p.peer.peerstore import PeerStore
|
||||||
from libp2p.protocol_muxer.multiselect import Multiselect
|
from libp2p.protocol_muxer.multiselect import Multiselect
|
||||||
from libp2p.protocol_muxer.multiselect_client import MultiselectClient
|
from libp2p.protocol_muxer.multiselect_client import MultiselectClient
|
||||||
from libp2p.routing.interfaces import IPeerRouting
|
from libp2p.routing.interfaces import IPeerRouting
|
||||||
|
from libp2p.stream_muxer.muxed_connection_interface import IMuxedConn
|
||||||
from libp2p.transport.upgrader import TransportUpgrader
|
from libp2p.transport.upgrader import TransportUpgrader
|
||||||
from libp2p.transport.transport_interface import ITransport
|
from libp2p.transport.transport_interface import ITransport
|
||||||
from libp2p.transport.listener_interface import IListener
|
from libp2p.transport.listener_interface import IListener
|
||||||
from libp2p.stream_muxer.muxed_connection_interface import IMuxedConn
|
|
||||||
|
|
||||||
from libp2p.stream_muxer.mplex.mplex_stream import MplexStream
|
from libp2p.stream_muxer.mplex.mplex_stream import MplexStream
|
||||||
|
|
||||||
|
@ -29,9 +29,10 @@ from .network_interface import INetwork
|
||||||
from .notifee_interface import INotifee
|
from .notifee_interface import INotifee
|
||||||
from .connection.raw_connection import RawConnection
|
from .connection.raw_connection import RawConnection
|
||||||
from .stream.net_stream import NetStream
|
from .stream.net_stream import NetStream
|
||||||
|
from .stream.net_stream_interface import INetStream
|
||||||
|
|
||||||
|
|
||||||
StreamHandlerFn = Callable[[NetStream], Coroutine[Any, Any, None]]
|
StreamHandlerFn = Callable[[INetStream], Awaitable[None]]
|
||||||
|
|
||||||
|
|
||||||
class Swarm(INetwork):
|
class Swarm(INetwork):
|
||||||
|
@ -44,7 +45,7 @@ class Swarm(INetwork):
|
||||||
router: IPeerRouting
|
router: IPeerRouting
|
||||||
connections: Dict[ID, IMuxedConn]
|
connections: Dict[ID, IMuxedConn]
|
||||||
listeners: Dict[str, IListener]
|
listeners: Dict[str, IListener]
|
||||||
stream_handlers: Dict[NetStream, Callable[[NetStream], None]]
|
stream_handlers: Dict[INetStream, Callable[[INetStream], None]]
|
||||||
|
|
||||||
multiselect: Multiselect
|
multiselect: Multiselect
|
||||||
multiselect_client: MultiselectClient
|
multiselect_client: MultiselectClient
|
||||||
|
@ -252,7 +253,7 @@ class Swarm(INetwork):
|
||||||
# TODO: `disconnect`?
|
# TODO: `disconnect`?
|
||||||
|
|
||||||
|
|
||||||
GenericProtocolHandlerFn = Callable[[MplexStream], Coroutine[Any, Any, None]]
|
GenericProtocolHandlerFn = Callable[[MplexStream], Awaitable[None]]
|
||||||
|
|
||||||
|
|
||||||
def create_generic_protocol_handler(swarm: Swarm) -> GenericProtocolHandlerFn:
|
def create_generic_protocol_handler(swarm: Swarm) -> GenericProtocolHandlerFn:
|
||||||
|
|
|
@ -39,10 +39,10 @@ class PeerData(IPeerData):
|
||||||
def clear_addrs(self) -> None:
|
def clear_addrs(self) -> None:
|
||||||
self.addrs = []
|
self.addrs = []
|
||||||
|
|
||||||
def put_metadata(self, key: Any, val: Any) -> None:
|
def put_metadata(self, key: str, val: Any) -> None:
|
||||||
self.metadata[key] = val
|
self.metadata[key] = val
|
||||||
|
|
||||||
def get_metadata(self, key: Any) -> Any:
|
def get_metadata(self, key: str) -> Any:
|
||||||
if key in self.metadata:
|
if key in self.metadata:
|
||||||
return self.metadata[key]
|
return self.metadata[key]
|
||||||
raise PeerDataError("key not found")
|
raise PeerDataError("key not found")
|
||||||
|
|
|
@ -7,6 +7,8 @@ from typing import (
|
||||||
|
|
||||||
from multiaddr import Multiaddr
|
from multiaddr import Multiaddr
|
||||||
|
|
||||||
|
from .peermetadata_interface import IPeerMetadata
|
||||||
|
|
||||||
|
|
||||||
class IPeerData(ABC):
|
class IPeerData(ABC):
|
||||||
|
|
||||||
|
@ -47,7 +49,7 @@ class IPeerData(ABC):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def put_metadata(self, key: Any, val: Any) -> None:
|
def put_metadata(self, key: str, val: Any) -> None:
|
||||||
"""
|
"""
|
||||||
:param key: key in KV pair
|
:param key: key in KV pair
|
||||||
:param val: val to associate with key
|
:param val: val to associate with key
|
||||||
|
@ -55,7 +57,7 @@ class IPeerData(ABC):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def get_metadata(self, key: Any) -> Any:
|
def get_metadata(self, key: str) -> IPeerMetadata:
|
||||||
"""
|
"""
|
||||||
:param key: key in KV pair
|
:param key: key in KV pair
|
||||||
:return: val for key
|
:return: val for key
|
||||||
|
|
|
@ -14,7 +14,7 @@ class IPeerMetadata(ABC):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def get(self, peer_id: ID, key: Any) -> Any:
|
def get(self, peer_id: ID, key: str) -> Any:
|
||||||
"""
|
"""
|
||||||
:param peer_id: peer ID to lookup key for
|
:param peer_id: peer ID to lookup key for
|
||||||
:param key: key to look up
|
:param key: key to look up
|
||||||
|
@ -23,7 +23,7 @@ class IPeerMetadata(ABC):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def put(self, peer_id: ID, key: Any, val: Any) -> None:
|
def put(self, peer_id: ID, key: str, val: Any) -> None:
|
||||||
"""
|
"""
|
||||||
:param peer_id: peer ID to lookup key for
|
:param peer_id: peer ID to lookup key for
|
||||||
:param key: key to associate with peer
|
:param key: key to associate with peer
|
||||||
|
|
|
@ -58,13 +58,13 @@ class PeerStore(IPeerStore):
|
||||||
def peer_ids(self) -> List[ID]:
|
def peer_ids(self) -> List[ID]:
|
||||||
return list(self.peer_map.keys())
|
return list(self.peer_map.keys())
|
||||||
|
|
||||||
def get(self, peer_id: ID, key: Any) -> Any:
|
def get(self, peer_id: ID, key: str) -> Any:
|
||||||
if peer_id in self.peer_map:
|
if peer_id in self.peer_map:
|
||||||
val = self.peer_map[peer_id].get_metadata(key)
|
val = self.peer_map[peer_id].get_metadata(key)
|
||||||
return val
|
return val
|
||||||
raise PeerStoreError("peer ID not found")
|
raise PeerStoreError("peer ID not found")
|
||||||
|
|
||||||
def put(self, peer_id: ID, key: Any, val: Any) -> None:
|
def put(self, peer_id: ID, key: str, val: Any) -> None:
|
||||||
# <<?>>
|
# <<?>>
|
||||||
# This can output an error, not sure what the possible errors are
|
# This can output an error, not sure what the possible errors are
|
||||||
peer = self.__create_or_get_peer(peer_id)
|
peer = self.__create_or_get_peer(peer_id)
|
||||||
|
|
|
@ -306,8 +306,7 @@ class Pubsub:
|
||||||
# Tell router we are leaving this topic
|
# Tell router we are leaving this topic
|
||||||
await self.router.leave(topic_id)
|
await self.router.leave(topic_id)
|
||||||
|
|
||||||
# FIXME: `raw_msg` can be further type hinted with mypy_protobuf
|
async def message_all_peers(self, raw_msg: bytes) -> None:
|
||||||
async def message_all_peers(self, raw_msg: Any) -> None:
|
|
||||||
"""
|
"""
|
||||||
Broadcast a message to peers
|
Broadcast a message to peers
|
||||||
:param raw_msg: raw contents of the message to broadcast
|
:param raw_msg: raw contents of the message to broadcast
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from typing import (
|
from typing import (
|
||||||
Any,
|
Any,
|
||||||
Coroutine,
|
|
||||||
Iterable,
|
Iterable,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -31,7 +30,7 @@ class IContentRouting(ABC):
|
||||||
class IPeerRouting(ABC):
|
class IPeerRouting(ABC):
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def find_peer(self, peer_id: ID) -> Coroutine[Any, Any, PeerInfo]:
|
async def find_peer(self, peer_id: ID) -> PeerInfo:
|
||||||
"""
|
"""
|
||||||
Find specific Peer
|
Find specific Peer
|
||||||
FindPeer searches for a peer with given peer_id, returns a peer.PeerInfo
|
FindPeer searches for a peer with given peer_id, returns a peer.PeerInfo
|
||||||
|
|
|
@ -9,6 +9,7 @@ from libp2p.kademlia.kad_peerinfo import (
|
||||||
)
|
)
|
||||||
from libp2p.kademlia.network import KademliaServer
|
from libp2p.kademlia.network import KademliaServer
|
||||||
from libp2p.peer.id import ID
|
from libp2p.peer.id import ID
|
||||||
|
from libp2p.peer.peerinfo import PeerInfo
|
||||||
from libp2p.routing.interfaces import IPeerRouting
|
from libp2p.routing.interfaces import IPeerRouting
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
|
from libp2p.stream_muxer.muxed_stream_interface import IMuxedStream
|
||||||
|
|
||||||
from .utils import get_flag
|
from .utils import get_flag
|
||||||
from ..muxed_stream_interface import IMuxedStream
|
|
||||||
|
|
||||||
|
|
||||||
class MplexStream(IMuxedStream):
|
class MplexStream(IMuxedStream):
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
|
|
||||||
|
from libp2p.stream_muxer.mplex.mplex import Mplex
|
||||||
|
|
||||||
|
|
||||||
class IMuxedStream(ABC):
|
class IMuxedStream(ABC):
|
||||||
|
|
||||||
|
mplex_conn: Mplex
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def read(self):
|
def read(self):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue
Block a user