QUIC Protocol Implementation 1.0
A Python implementation of the QUIC (Quick UDP Internet Connections) protocol.
|
Public Member Functions | |
__init__ (self, int stream_id, bool is_usable) | |
stream_frame_recvd (self, FrameStream frame) | |
bytes | get_data_from_buffer (self) |
![]() | |
bool | has_data (self) |
bool | is_terminal_state (self) |
Protected Member Functions | |
_add_frame_to_recv_dict (self, FrameStream frame) | |
_fin_recvd (self) | |
_convert_dict_to_buffer (self) | |
_add_data_to_buffer (self, bytes data) | |
![]() | |
bool | _set_state (self, int state) |
Protected Attributes | |
_state | |
_recv_frame_dict | |
![]() | |
_state | |
_buffer | |
@brief Represents the receiving endpoint of a QUIC stream. @details Handles reception of stream frames, ordering them by offset, and assembling the complete stream data.
stream.StreamReceiver.__init__ | ( | self, | |
int | stream_id, | ||
bool | is_usable | ||
) |
@brief Initialize a StreamReceiver instance. @param stream_id The stream ID associated with this receiver. @param is_usable Whether this receiver can be used for receiving data.
Reimplemented from stream.StreamEndpointABC.
Definition at line 297 of file stream.py.
References stream.StreamReceiver.__init__(), and stream.StreamReceiver._recv_frame_dict.
Referenced by stream.StreamReceiver.__init__().
|
protected |
@brief Add data to the buffer if the size is known. @param data The data to add. @throws ValueError If the stream size is not known.
Reimplemented from stream.StreamEndpointABC.
Definition at line 349 of file stream.py.
References stream.StreamEndpointABC._buffer, stream.StreamSender._buffer, stream.StreamEndpointABC._state, stream.StreamSender._state, and stream.StreamReceiver._state.
Referenced by stream.StreamSender.add_data_to_buffer().
|
protected |
@brief Add a received frame to the receiver's dictionary. @details Updates the current offset. @param frame The received frame.
Definition at line 317 of file stream.py.
References stream.StreamReceiver._recv_frame_dict.
Referenced by stream.StreamReceiver.stream_frame_recvd().
|
protected |
|
protected |
@brief Handle the reception of a FIN frame. @details Indicates that all data has been received.
Definition at line 330 of file stream.py.
References stream.StreamEndpointABC._set_state().
Referenced by stream.StreamReceiver.stream_frame_recvd().
bytes stream.StreamReceiver.get_data_from_buffer | ( | self | ) |
@brief Retrieve the data from the buffer. @return The data in the buffer. @throws ValueError If the stream is closed.
Definition at line 361 of file stream.py.
References stream.StreamEndpointABC._buffer, stream.StreamSender._buffer, stream.StreamEndpointABC._set_state(), stream.StreamEndpointABC._state, stream.StreamSender._state, and stream.StreamReceiver._state.
stream.StreamReceiver.stream_frame_recvd | ( | self, | |
FrameStream | frame | ||
) |
@brief Process a received frame and add it to the receiver's buffer. @param frame The received frame.
Definition at line 307 of file stream.py.
References stream.StreamReceiver._add_frame_to_recv_dict(), and stream.StreamReceiver._fin_recvd().
|
protected |
Definition at line 344 of file stream.py.
Referenced by stream.StreamReceiver.__init__(), and stream.StreamReceiver._add_frame_to_recv_dict().
|
protected |
Definition at line 327 of file stream.py.
Referenced by stream.StreamEndpointABC.__init__(), stream.StreamReceiver._add_data_to_buffer(), stream.StreamReceiver.get_data_from_buffer(), and stream.StreamEndpointABC.is_terminal_state().