refactoring stream IDs

This commit is contained in:
Robert Zajac
2018-11-29 13:42:05 -05:00
parent 49bc5d2f65
commit 803999310a
7 changed files with 72 additions and 27 deletions

View File

@ -2,13 +2,24 @@ from .raw_connection_interface import IRawConnection
class RawConnection(IRawConnection):
# pylint: disable=too-few-public-methods
def __init__(self, ip, port, reader, writer):
def __init__(self, ip, port, reader, writer, initiator):
# pylint: disable=too-many-arguments
self.conn_ip = ip
self.conn_port = port
self.reader = reader
self.writer = writer
self._next_id = 0 if initiator else 1
self.initiator = initiator
def close(self):
self.writer.close()
def next_stream_id(self):
"""
Get next available stream id
:return: next available stream id for the connection
"""
next_id = self._next_id
self._next_id += 2
return next_id

View File

@ -59,7 +59,7 @@ class Swarm(INetwork):
raw_conn = await self.transport.dial(multiaddr)
# Use upgrader to upgrade raw conn to muxed conn
muxed_conn = self.upgrader.upgrade_connection(raw_conn, True)
muxed_conn = self.upgrader.upgrade_connection(raw_conn)
# Store muxed connection in connections
self.connections[peer_id] = muxed_conn
@ -118,8 +118,8 @@ class Swarm(INetwork):
# Upgrade reader/write to a net_stream and pass \
# to appropriate stream handler (using multiaddr)
raw_conn = RawConnection(multiaddr.value_for_protocol('ip4'),
multiaddr.value_for_protocol('tcp'), reader, writer)
muxed_conn = self.upgrader.upgrade_connection(raw_conn, False)
multiaddr.value_for_protocol('tcp'), reader, writer, False)
muxed_conn = self.upgrader.upgrade_connection(raw_conn)
# TODO: Remove protocol id from muxed_conn accept stream or
# move protocol muxing into accept_stream