PR feedback for MplexStream.read
This commit is contained in:
parent
8699568d43
commit
c5f32bf431
|
@ -75,7 +75,8 @@ class Mplex(IMuxedConn):
|
||||||
|
|
||||||
async def read_buffer(self, stream_id: int) -> bytes:
|
async def read_buffer(self, stream_id: int) -> bytes:
|
||||||
"""
|
"""
|
||||||
Read a message from stream_id's buffer, check raw connection for new messages
|
Read a message from stream_id's buffer, check raw connection for new messages.
|
||||||
|
`StreamNotFound` is raised when stream `stream_id` is not found in `Mplex`.
|
||||||
:param stream_id: stream id of stream to read from
|
:param stream_id: stream id of stream to read from
|
||||||
:return: message read
|
:return: message read
|
||||||
"""
|
"""
|
||||||
|
@ -86,6 +87,7 @@ class Mplex(IMuxedConn):
|
||||||
async def read_buffer_nonblocking(self, stream_id: int) -> Optional[bytes]:
|
async def read_buffer_nonblocking(self, stream_id: int) -> Optional[bytes]:
|
||||||
"""
|
"""
|
||||||
Read a message from `stream_id`'s buffer, non-blockingly.
|
Read a message from `stream_id`'s buffer, non-blockingly.
|
||||||
|
`StreamNotFound` is raised when stream `stream_id` is not found in `Mplex`.
|
||||||
"""
|
"""
|
||||||
if stream_id not in self.buffers:
|
if stream_id not in self.buffers:
|
||||||
raise StreamNotFound(f"stream {stream_id} is not found")
|
raise StreamNotFound(f"stream {stream_id} is not found")
|
||||||
|
|
|
@ -46,14 +46,15 @@ class MplexStream(IMuxedStream):
|
||||||
:param n: number of bytes to read
|
:param n: number of bytes to read
|
||||||
:return: bytes actually read
|
:return: bytes actually read
|
||||||
"""
|
"""
|
||||||
|
# TODO: Handle `StreamNotFound` raised in `self.mplex_conn.read_buffer`.
|
||||||
|
# TODO: Add exceptions and handle/raise them in this class.
|
||||||
if n < 0 and n != -1:
|
if n < 0 and n != -1:
|
||||||
raise ValueError(f"the number of bytes to read ``n`` must be positive or -1 to indicate read until EOF")
|
raise ValueError(
|
||||||
|
f"the number of bytes to read `n` must be positive or -1 to indicate read until EOF"
|
||||||
|
)
|
||||||
# If the buffer is empty at first, blocking wait for data.
|
# If the buffer is empty at first, blocking wait for data.
|
||||||
if len(self._buf) == 0:
|
if len(self._buf) == 0:
|
||||||
self._buf.extend(await self.mplex_conn.read_buffer(self.stream_id))
|
self._buf.extend(await self.mplex_conn.read_buffer(self.stream_id))
|
||||||
# Sanity check: `self._buf` should never be empty here.
|
|
||||||
if self._buf is None or len(self._buf) == 0:
|
|
||||||
raise Exception("`self._buf` should never be empty here")
|
|
||||||
|
|
||||||
# FIXME: If `n == -1`, we should blocking read until EOF, instead of returning when
|
# FIXME: If `n == -1`, we should blocking read until EOF, instead of returning when
|
||||||
# no message is available.
|
# no message is available.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user