|
@ -30,22 +30,11 @@ class MultiselectClient(IMultiselectClient): |
|
|
handshake_contents = await communicator.read_stream_until_eof() |
|
|
handshake_contents = await communicator.read_stream_until_eof() |
|
|
|
|
|
|
|
|
# Confirm that the protocols are the same |
|
|
# Confirm that the protocols are the same |
|
|
if not self.validate_handshake(handshake_contents): |
|
|
if not validate_handshake(handshake_contents): |
|
|
raise MultiselectClientError("multiselect protocol ID mismatch") |
|
|
raise MultiselectClientError("multiselect protocol ID mismatch") |
|
|
|
|
|
|
|
|
# Handshake succeeded if this point is reached |
|
|
# Handshake succeeded if this point is reached |
|
|
|
|
|
|
|
|
def validate_handshake(self, handshake_contents): |
|
|
|
|
|
""" |
|
|
|
|
|
Determine if handshake is valid and should be confirmed |
|
|
|
|
|
:param handshake_contents: contents of handshake message |
|
|
|
|
|
:return: true if handshake is complete, false otherwise |
|
|
|
|
|
""" |
|
|
|
|
|
|
|
|
|
|
|
# TODO: Modify this when format used by go repo for messages |
|
|
|
|
|
# is added |
|
|
|
|
|
return handshake_contents == MULTISELECT_PROTOCOL_ID |
|
|
|
|
|
|
|
|
|
|
|
async def select_protocol_or_fail(self, protocol, stream): |
|
|
async def select_protocol_or_fail(self, protocol, stream): |
|
|
""" |
|
|
""" |
|
|
Send message to multiselect selecting protocol |
|
|
Send message to multiselect selecting protocol |
|
@ -117,5 +106,17 @@ class MultiselectClient(IMultiselectClient): |
|
|
else: |
|
|
else: |
|
|
raise MultiselectClientError("unrecognized response: " + response) |
|
|
raise MultiselectClientError("unrecognized response: " + response) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def validate_handshake(handshake_contents): |
|
|
|
|
|
""" |
|
|
|
|
|
Determine if handshake is valid and should be confirmed |
|
|
|
|
|
:param handshake_contents: contents of handshake message |
|
|
|
|
|
:return: true if handshake is complete, false otherwise |
|
|
|
|
|
""" |
|
|
|
|
|
|
|
|
|
|
|
# TODO: Modify this when format used by go repo for messages |
|
|
|
|
|
# is added |
|
|
|
|
|
return handshake_contents == MULTISELECT_PROTOCOL_ID |
|
|
|
|
|
|
|
|
class MultiselectClientError(ValueError): |
|
|
class MultiselectClientError(ValueError): |
|
|
"""Raised when an error occurs in protocol selection process""" |
|
|
"""Raised when an error occurs in protocol selection process""" |
|
|