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

Public Member Functions

 __init__ (self, int stream_id, bool is_usable)
 
 add_data_to_buffer (self, bytes data)
 
 generate_stream_frames (self, int max_size)
 
FrameStream generate_fin_frame (self)
 
FrameStream send_next_frame (self)
 
- Public Member Functions inherited from stream.StreamEndpointABC
bool has_data (self)
 
bool is_terminal_state (self)
 

Protected Member Functions

 _add_data_to_buffer (self, bytes data)
 
int _get_total_stream_frames_amount (self, int max_size)
 
- Protected Member Functions inherited from stream.StreamEndpointABC
bool _set_state (self, int state)
 

Protected Attributes

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

Detailed Description

@brief Represents the sending endpoint of a QUIC stream.

@details Handles buffering of data to send, generation of stream frames,
         and sending frames over the network.

Definition at line 191 of file stream.py.

Constructor & Destructor Documentation

◆ __init__()

stream.StreamSender.__init__ (   self,
int  stream_id,
bool  is_usable 
)
@brief Initialize a StreamSender instance.

@param stream_id The stream ID associated with this sender.
@param is_usable Whether this sender can be used for sending data.

Reimplemented from stream.StreamEndpointABC.

Definition at line 199 of file stream.py.

References stream.StreamSender.__init__().

Referenced by stream.StreamSender.__init__().

Member Function Documentation

◆ _add_data_to_buffer()

stream.StreamSender._add_data_to_buffer (   self,
bytes  data 
)
protected
@brief Internal method to add data to the buffer.

@details Only adds data if the stream is in READY state.

@param data The data to add.
@throws ValueError If the stream is not in READY state.

Reimplemented from stream.StreamEndpointABC.

Definition at line 217 of file stream.py.

Referenced by stream.StreamSender.add_data_to_buffer().

◆ _get_total_stream_frames_amount()

int stream.StreamSender._get_total_stream_frames_amount (   self,
int  max_size 
)
protected
@brief Calculate the number of frames required for the data in the buffer.

@param max_size The maximum size of each frame.
@return The total number of frames.

Definition at line 248 of file stream.py.

Referenced by stream.StreamSender.generate_stream_frames().

◆ add_data_to_buffer()

stream.StreamSender.add_data_to_buffer (   self,
bytes  data 
)
@brief Add data to the sender's buffer.

@param data The data to add.

Definition at line 209 of file stream.py.

References stream.StreamEndpointABC._add_data_to_buffer(), stream.StreamSender._add_data_to_buffer(), and stream.StreamReceiver._add_data_to_buffer().

◆ generate_fin_frame()

FrameStream stream.StreamSender.generate_fin_frame (   self)
@brief Generate a frame with the FIN bit set.

@details This indicates the end of the stream.

@return The final frame for the stream.

Definition at line 260 of file stream.py.

References stream.StreamEndpointABC._buffer, stream.StreamSender._buffer, stream.StreamEndpointABC._set_state(), and stream.Stream._stream_id.

Referenced by stream.StreamSender.generate_stream_frames().

◆ generate_stream_frames()

stream.StreamSender.generate_stream_frames (   self,
int  max_size 
)
@brief Generate frames for the data in the buffer.

@details Splits data into chunks if necessary.

@param max_size The maximum size of each frame.

Definition at line 231 of file stream.py.

References stream.StreamEndpointABC._buffer, stream.StreamSender._buffer, stream.StreamSender._get_total_stream_frames_amount(), stream.StreamSender._stream_frames, stream.Stream._stream_id, and stream.StreamSender.generate_fin_frame().

◆ send_next_frame()

FrameStream stream.StreamSender.send_next_frame (   self)
@brief Send the next frame in the queue.

@return The next frame to be sent.

Definition at line 275 of file stream.py.

References stream.StreamEndpointABC._set_state(), and stream.StreamSender._stream_frames.

Member Data Documentation

◆ _buffer

◆ _state

◆ _stream_frames

stream.StreamSender._stream_frames
protected

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