adapt for multiaddr release
This commit is contained in:
parent
82682ab03f
commit
fe67cdb480
|
@ -1,6 +1,6 @@
|
||||||
import multiaddr
|
import multiaddr
|
||||||
import multiaddr.util
|
|
||||||
|
|
||||||
|
from .utils import join, split
|
||||||
from .id import id_b58_decode
|
from .id import id_b58_decode
|
||||||
from .peerdata import PeerData
|
from .peerdata import PeerData
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ def info_from_p2p_addr(addr):
|
||||||
if not addr:
|
if not addr:
|
||||||
raise InvalidAddrError()
|
raise InvalidAddrError()
|
||||||
|
|
||||||
parts = multiaddr.util.split(addr)
|
parts = split(addr)
|
||||||
if not parts:
|
if not parts:
|
||||||
raise InvalidAddrError()
|
raise InvalidAddrError()
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ def info_from_p2p_addr(addr):
|
||||||
|
|
||||||
# we might have received just an / p2p part, which means there's no addr.
|
# we might have received just an / p2p part, which means there's no addr.
|
||||||
if len(parts) > 1:
|
if len(parts) > 1:
|
||||||
addr = multiaddr.util.join(parts[:-1])
|
addr = join(parts[:-1])
|
||||||
|
|
||||||
peer_data = PeerData()
|
peer_data = PeerData()
|
||||||
peer_data.addrs = [addr]
|
peer_data.addrs = [addr]
|
||||||
|
|
34
libp2p/peer/utils.py
Normal file
34
libp2p/peer/utils.py
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
from multiaddr import Multiaddr
|
||||||
|
from multiaddr.protocols import protocol_with_code, read_varint_code
|
||||||
|
|
||||||
|
def size_for_addr(proto, buf):
|
||||||
|
if proto.size >= 0:
|
||||||
|
return proto.size // 8
|
||||||
|
size, num_bytes_read = read_varint_code(buf)
|
||||||
|
return size + num_bytes_read
|
||||||
|
|
||||||
|
def bytes_split(buf):
|
||||||
|
ret = []
|
||||||
|
while buf:
|
||||||
|
code, num_bytes_read = read_varint_code(buf)
|
||||||
|
proto = protocol_with_code(code)
|
||||||
|
size = size_for_addr(proto, buf[num_bytes_read:])
|
||||||
|
length = size + num_bytes_read
|
||||||
|
ret.append(buf[:length])
|
||||||
|
buf = buf[length:]
|
||||||
|
return ret
|
||||||
|
|
||||||
|
def split(_multiaddr):
|
||||||
|
"""Return the sub-address portions of a multiaddr"""
|
||||||
|
addrs = []
|
||||||
|
splitted_addrs = bytes_split(_multiaddr.to_bytes())
|
||||||
|
for addr in splitted_addrs:
|
||||||
|
addrs.append(Multiaddr(addr))
|
||||||
|
return addrs
|
||||||
|
|
||||||
|
|
||||||
|
def join(multiaddrs):
|
||||||
|
addr_list = []
|
||||||
|
for addr in multiaddrs:
|
||||||
|
addr_list.append(addr.to_bytes())
|
||||||
|
return Multiaddr(b''.join(addr_list))
|
|
@ -28,7 +28,7 @@ class TCP(ITransport):
|
||||||
:return: return True if successful
|
:return: return True if successful
|
||||||
"""
|
"""
|
||||||
_multiaddr = multiaddr
|
_multiaddr = multiaddr
|
||||||
_multiaddr = _multiaddr.decapsulate('/p2p')
|
# _multiaddr = _multiaddr.decapsulate('/p2p')
|
||||||
|
|
||||||
coroutine = asyncio.start_server(self.handler,
|
coroutine = asyncio.start_server(self.handler,
|
||||||
_multiaddr.value_for_protocol('ip4'),
|
_multiaddr.value_for_protocol('ip4'),
|
||||||
|
|
Loading…
Reference in New Issue
Block a user