示例#1
0
def test_protocol_with_code():
    proto = protocols.protocol_with_code(protocols.P_IP4)
    assert proto.name == 'ip4'
    assert proto.code == protocols.P_IP4

    with pytest.raises(ValueError):
        proto = protocols.protocol_with_code(1234)
示例#2
0
def test_protocol_with_code():
    proto = protocols.protocol_with_code(protocols.P_IP4)
    assert proto.name == 'ip4'
    assert proto.code == protocols.P_IP4
    assert proto.size == 32
    assert proto.vcode == varint.encode(protocols.P_IP4)
    assert hash(proto) == protocols.P_IP4

    with pytest.raises(exceptions.ProtocolNotFoundError):
        proto = protocols.protocol_with_code(1234)
示例#3
0
def test_protocol_equality():
    proto1 = protocols.protocol_with_name('ip4')
    proto2 = protocols.protocol_with_code(protocols.P_IP4)
    proto3 = protocols.protocol_with_name('onion')

    assert proto1 == proto2
    assert proto1 != proto3
def parse_conn_protocol(maddr: Multiaddr) -> int:
    proto_codes = set(proto.code for proto in maddr.protocols())
    proto_cand = proto_codes.intersection(_supported_conn_protocols)
    if len(proto_cand) != 1:
        supported_protos = (protocols.protocol_with_code(proto)
                            for proto in _supported_conn_protocols)
        raise ValueError(
            f"connection protocol should be only one protocol out of {supported_protos}"
            f", maddr={maddr}")
    return tuple(proto_cand)[0]
示例#5
0
def test_protocol_equality():
    proto1 = protocols.protocol_with_name('ip4')
    proto2 = protocols.protocol_with_code(protocols.P_IP4)
    proto3 = protocols.protocol_with_name('onion')
    proto4 = protocols.protocol_with_name('onion3')

    assert proto1 == proto2
    assert proto1 != proto3
    assert proto3 != proto4
    assert proto1 is not None
    assert proto2 != str(proto2)
示例#6
0
from hivemind.p2p.p2p_daemon_bindings.utils import (DispatchFailure,
                                                    raise_if_failed,
                                                    read_pbmsg_safe,
                                                    write_pbmsg)
from hivemind.proto import p2pd_pb2 as p2pd_pb
from hivemind.utils.logging import get_logger

StreamHandler = Callable[[StreamInfo, asyncio.StreamReader, asyncio.StreamWriter], Awaitable[None]]

SUPPORT_CONN_PROTOCOLS = (
    protocols.P_IP4,
    # protocols.P_IP6,
    protocols.P_UNIX,
)
SUPPORTED_PROTOS = (
    protocols.protocol_with_code(proto) for proto in SUPPORT_CONN_PROTOCOLS
)
logger = get_logger(__name__)


def parse_conn_protocol(maddr: Multiaddr) -> int:
    proto_codes = set(proto.code for proto in maddr.protocols())
    proto_cand = proto_codes.intersection(SUPPORT_CONN_PROTOCOLS)
    if len(proto_cand) != 1:
        raise ValueError(
            f"connection protocol should be only one protocol out of {SUPPORTED_PROTOS}"
            f", maddr={maddr}"
        )
    return tuple(proto_cand)[0]