Handle MultiselectCommunicatorError
This commit is contained in:
parent
879f193aa1
commit
eaa74c4e26
|
@ -2,7 +2,7 @@ from typing import Dict, Tuple
|
||||||
|
|
||||||
from libp2p.typing import StreamHandlerFn, TProtocol
|
from libp2p.typing import StreamHandlerFn, TProtocol
|
||||||
|
|
||||||
from .exceptions import MultiselectError
|
from .exceptions import MultiselectCommunicatorError, MultiselectError
|
||||||
from .multiselect_communicator_interface import IMultiselectCommunicator
|
from .multiselect_communicator_interface import IMultiselectCommunicator
|
||||||
from .multiselect_muxer_interface import IMultiselectMuxer
|
from .multiselect_muxer_interface import IMultiselectMuxer
|
||||||
|
|
||||||
|
@ -46,7 +46,10 @@ class Multiselect(IMultiselectMuxer):
|
||||||
# Read and respond to commands until a valid protocol ID is sent
|
# Read and respond to commands until a valid protocol ID is sent
|
||||||
while True:
|
while True:
|
||||||
# Read message
|
# Read message
|
||||||
|
try:
|
||||||
command = await communicator.read()
|
command = await communicator.read()
|
||||||
|
except MultiselectCommunicatorError as error:
|
||||||
|
raise MultiselectError(str(error))
|
||||||
|
|
||||||
# Command is ls or a protocol
|
# Command is ls or a protocol
|
||||||
if command == "ls":
|
if command == "ls":
|
||||||
|
@ -76,7 +79,10 @@ class Multiselect(IMultiselectMuxer):
|
||||||
await communicator.write(MULTISELECT_PROTOCOL_ID)
|
await communicator.write(MULTISELECT_PROTOCOL_ID)
|
||||||
|
|
||||||
# Read in the protocol ID from other party
|
# Read in the protocol ID from other party
|
||||||
|
try:
|
||||||
handshake_contents = await communicator.read()
|
handshake_contents = await communicator.read()
|
||||||
|
except MultiselectCommunicatorError as error:
|
||||||
|
raise MultiselectError(str(error))
|
||||||
|
|
||||||
# Confirm that the protocols are the same
|
# Confirm that the protocols are the same
|
||||||
if not validate_handshake(handshake_contents):
|
if not validate_handshake(handshake_contents):
|
||||||
|
|
|
@ -2,7 +2,7 @@ from typing import Sequence
|
||||||
|
|
||||||
from libp2p.typing import TProtocol
|
from libp2p.typing import TProtocol
|
||||||
|
|
||||||
from .exceptions import MultiselectClientError
|
from .exceptions import MultiselectClientError, MultiselectCommunicatorError
|
||||||
from .multiselect_client_interface import IMultiselectClient
|
from .multiselect_client_interface import IMultiselectClient
|
||||||
from .multiselect_communicator_interface import IMultiselectCommunicator
|
from .multiselect_communicator_interface import IMultiselectCommunicator
|
||||||
|
|
||||||
|
@ -30,7 +30,10 @@ class MultiselectClient(IMultiselectClient):
|
||||||
await communicator.write(MULTISELECT_PROTOCOL_ID)
|
await communicator.write(MULTISELECT_PROTOCOL_ID)
|
||||||
|
|
||||||
# Read in the protocol ID from other party
|
# Read in the protocol ID from other party
|
||||||
|
try:
|
||||||
handshake_contents = await communicator.read()
|
handshake_contents = await communicator.read()
|
||||||
|
except MultiselectCommunicatorError as error:
|
||||||
|
raise MultiselectClientError(str(error))
|
||||||
|
|
||||||
# Confirm that the protocols are the same
|
# Confirm that the protocols are the same
|
||||||
if not validate_handshake(handshake_contents):
|
if not validate_handshake(handshake_contents):
|
||||||
|
@ -79,7 +82,10 @@ class MultiselectClient(IMultiselectClient):
|
||||||
await communicator.write(protocol)
|
await communicator.write(protocol)
|
||||||
|
|
||||||
# Get what counterparty says in response
|
# Get what counterparty says in response
|
||||||
|
try:
|
||||||
response = await communicator.read()
|
response = await communicator.read()
|
||||||
|
except MultiselectCommunicatorError as error:
|
||||||
|
raise MultiselectClientError(str(error))
|
||||||
|
|
||||||
# Return protocol if response is equal to protocol or raise error
|
# Return protocol if response is equal to protocol or raise error
|
||||||
if response == protocol:
|
if response == protocol:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user