12#ifndef ROC_NETIO_TRANSCEIVER_H_
13#define ROC_NETIO_TRANSCEIVER_H_
110 static void task_sem_cb_(uv_async_t* handle);
111 static void stop_sem_cb_(uv_async_t* handle);
113 virtual void handle_closed(BasicPort&);
117 void async_close_ports_();
119 void process_tasks_();
120 void run_task_(Task&);
122 bool add_udp_receiver_(Task&);
123 bool add_udp_sender_(Task&);
125 bool remove_port_(Task&);
126 void wait_port_closed_(
const BasicPort& port);
127 bool port_is_closing_(
const BasicPort& port);
136 bool loop_initialized_;
138 uv_async_t stop_sem_;
139 bool stop_sem_initialized_;
141 uv_async_t task_sem_;
142 bool task_sem_initialized_;
Memory allocator interface.
Base class for list element.
Intrusive doubly-linked list.
Base class for thread objects.
void remove_port(packet::Address bind_address)
Remove sender or receiver port. Wait until port will be removed.
packet::IWriter * add_udp_sender(packet::Address &bind_address)
Add UDP datagram sender port.
size_t num_ports() const
Get number of receiver and sender ports.
Transceiver(packet::PacketPool &packet_pool, core::BufferPool< uint8_t > &buffer_pool, core::IAllocator &allocator)
Initialize.
bool add_udp_receiver(packet::Address &bind_address, packet::IWriter &writer)
Add UDP datagram receiver port.
bool valid() const
Check if transceiver was successfully constructed.
virtual ~Transceiver()
Destroy. Stop all receivers and senders.
Memory allocator interface.
Intrusive doubly-linked list.