QUIC Protocol Implementation 1.0
A Python implementation of the QUIC (Quick UDP Internet Connections) protocol.
Loading...
Searching...
No Matches
stream.StreamReceiver Class Reference
Inheritance diagram for stream.StreamReceiver:
Collaboration diagram for stream.StreamReceiver:

Public Member Functions

 __init__ (self, int stream_id, bool is_usable)
 
 stream_frame_recvd (self, FrameStream frame)
 
bytes get_data_from_buffer (self)
 
- Public Member Functions inherited from stream.StreamEndpointABC
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)
 
- Protected Member Functions inherited from stream.StreamEndpointABC
bool _set_state (self, int state)
 

Protected Attributes

 _state
 
 _recv_frame_dict
 
- Protected Attributes inherited from stream.StreamEndpointABC
 _state
 
 _buffer
 

Detailed Description

@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.

Definition at line 289 of file stream.py.

Constructor & Destructor Documentation

◆ __init__()

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__().

Member Function Documentation

◆ _add_data_to_buffer()

stream.StreamReceiver._add_data_to_buffer (   self,
bytes  data 
)
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().

◆ _add_frame_to_recv_dict()

stream.StreamReceiver._add_frame_to_recv_dict (   self,
FrameStream  frame 
)
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().

◆ _convert_dict_to_buffer()

stream.StreamReceiver._convert_dict_to_buffer (   self)
protected
@brief Convert the received frames in the dictionary to a single buffer.

@details Sorts frames by offset.

Definition at line 338 of file stream.py.

◆ _fin_recvd()

stream.StreamReceiver._fin_recvd (   self)
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().

◆ get_data_from_buffer()

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_frame_recvd()

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().

Member Data Documentation

◆ _recv_frame_dict

stream.StreamReceiver._recv_frame_dict
protected

◆ _state


The documentation for this class was generated from the following file: