add NegotiableTransport type

This commit is contained in:
Chih Cheng Liang 2019-08-08 15:58:30 +08:00 committed by Kevin Mai-Husan Chia
parent 9851ee01fb
commit dbb702548f
5 changed files with 15 additions and 12 deletions

View File

@ -1,7 +1,6 @@
from typing import Dict, Tuple from typing import Dict, Tuple
from libp2p.stream_muxer.abc import IMuxedStream from libp2p.typing import NegotiableTransport, StreamHandlerFn, TProtocol
from libp2p.typing import StreamHandlerFn, TProtocol
from .multiselect_communicator import MultiselectCommunicator from .multiselect_communicator import MultiselectCommunicator
from .multiselect_communicator_interface import IMultiselectCommunicator from .multiselect_communicator_interface import IMultiselectCommunicator
@ -31,7 +30,7 @@ class Multiselect(IMultiselectMuxer):
""" """
self.handlers[protocol] = handler self.handlers[protocol] = handler
async def negotiate(self, stream: IMuxedStream) -> Tuple[TProtocol, StreamHandlerFn]: async def negotiate(self, stream: NegotiableTransport) -> Tuple[TProtocol, StreamHandlerFn]:
""" """
Negotiate performs protocol selection Negotiate performs protocol selection
:param stream: stream to negotiate on :param stream: stream to negotiate on

View File

@ -1,7 +1,7 @@
from typing import Sequence from typing import Sequence
from libp2p.stream_muxer.abc import IMuxedStream from libp2p.stream_muxer.abc import IMuxedStream
from libp2p.typing import TProtocol from libp2p.typing import NegotiableTransport, TProtocol
from .multiselect_client_interface import IMultiselectClient from .multiselect_client_interface import IMultiselectClient
from .multiselect_communicator import MultiselectCommunicator from .multiselect_communicator import MultiselectCommunicator
@ -59,7 +59,7 @@ class MultiselectClient(IMultiselectClient):
return selected_protocol return selected_protocol
async def select_one_of( async def select_one_of(
self, protocols: Sequence[TProtocol], stream: IMuxedStream self, protocols: Sequence[TProtocol], stream: NegotiableTransport
) -> TProtocol: ) -> TProtocol:
""" """
For each protocol, send message to multiselect selecting protocol For each protocol, send message to multiselect selecting protocol

View File

@ -1,4 +1,4 @@
from libp2p.stream_muxer.abc import IMuxedStream from libp2p.typing import NegotiableTransport
from .multiselect_communicator_interface import IMultiselectCommunicator from .multiselect_communicator_interface import IMultiselectCommunicator
@ -10,9 +10,9 @@ class MultiselectCommunicator(IMultiselectCommunicator):
which is necessary for them to work which is necessary for them to work
""" """
reader_writer: IMuxedStream reader_writer: NegotiableTransport
def __init__(self, reader_writer: IMuxedStream) -> None: def __init__(self, reader_writer: NegotiableTransport) -> None:
""" """
MultistreamCommunicator expects a reader_writer object that has MultistreamCommunicator expects a reader_writer object that has
an async read and an async write function (this could be a stream, an async read and an async write function (this could be a stream,

View File

@ -1,8 +1,7 @@
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
from typing import Dict, Tuple from typing import Dict, Tuple
from libp2p.stream_muxer.abc import IMuxedStream from libp2p.typing import NegotiableTransport, StreamHandlerFn, TProtocol
from libp2p.typing import StreamHandlerFn, TProtocol
class IMultiselectMuxer(ABC): class IMultiselectMuxer(ABC):
@ -23,7 +22,7 @@ class IMultiselectMuxer(ABC):
""" """
@abstractmethod @abstractmethod
async def negotiate(self, stream: IMuxedStream) -> Tuple[TProtocol, StreamHandlerFn]: async def negotiate(self, stream: NegotiableTransport) -> Tuple[TProtocol, StreamHandlerFn]:
""" """
Negotiate performs protocol selection Negotiate performs protocol selection
:param stream: stream to negotiate on :param stream: stream to negotiate on

View File

@ -1,6 +1,11 @@
from typing import Awaitable, Callable, NewType from typing import Awaitable, Callable, NewType, Union
from libp2p.network.connection.raw_connection_interface import IRawConnection
from libp2p.network.stream.net_stream_interface import INetStream from libp2p.network.stream.net_stream_interface import INetStream
from libp2p.stream_muxer.abc import IMuxedStream
TProtocol = NewType("TProtocol", str) TProtocol = NewType("TProtocol", str)
StreamHandlerFn = Callable[[INetStream], Awaitable[None]] StreamHandlerFn = Callable[[INetStream], Awaitable[None]]
NegotiableTransport = Union[IMuxedStream, IRawConnection]