12 #ifndef ROC_PIPELINE_SENDER_ENDPOINT_H_
13 #define ROC_PIPELINE_SENDER_ENDPOINT_H_
#define ROC_ATTR_NODISCARD
Emit warning if function result is not checked.
Thread-safe lock-free node-based intrusive multi-producer single-consumer queue.
Base class for non-copyable objects.
Optionally constructed object.
Packet composer interface.
Sender endpoint sub-pipeline.
address::Protocol proto() const
Get protocol.
packet::IComposer & outbound_composer()
Get composer for outbound packets.
bool is_valid() const
Check if pipeline was succefully constructed.
const address::SocketAddr & outbound_address() const
Get destination address for outbound packets.
packet::IWriter & outbound_writer()
Get writer for outbound packets. This way packets generated by sender reach network.
packet::IWriter * inbound_writer()
Get writer for inbound packets. This way feedback packets from receiver reach sender pipeline.
ROC_ATTR_NODISCARD status::StatusCode pull_packets(core::nanoseconds_t current_time)
Pull packets written to inbound writer into pipeline.
SenderEndpoint(address::Protocol proto, StateTracker &state_tracker, SenderSession &sender_session, const address::SocketAddr &outbound_address, packet::IWriter &outbound_writer, core::IArena &arena)
Initialize.
Sender session sub-pipeline.
Packet composer interface.
Multi-producer single-consumer queue.
int64_t nanoseconds_t
Nanoseconds.
Optionally constructed object.
Prepare and ship outgoing packets.