unilink  0.4.3
A simple C++ library for unified async communication
unilink::transport::Serial::Impl Struct Reference

Public Member Functions

 Impl (const config::SerialConfig &cfg)
 
 Impl (const config::SerialConfig &cfg, std::unique_ptr< interface::SerialPortInterface > port, net::io_context &ioc)
 
void init ()
 
 ~Impl ()
 
void open_and_configure (std::shared_ptr< Serial > self)
 
void start_read (std::shared_ptr< Serial > self)
 
void do_write (std::shared_ptr< Serial > self)
 
void perform_cleanup ()
 
void handle_error (std::shared_ptr< Serial > self, const char *where, const boost::system::error_code &ec)
 
void schedule_retry (std::shared_ptr< Serial > self, const char *where, const boost::system::error_code &ec)
 
void close_port ()
 
void notify_state ()
 
void report_backpressure (size_t qb)
 

Public Attributes

bool started_ = false
 
std::atomic< bool > stopping_ {false}
 
net::io_context & ioc_
 
bool owns_ioc_ {false}
 
net::strand< net::io_context::executor_type > strand_
 
std::unique_ptr< net::executor_work_guard< net::io_context::executor_type > > work_guard_
 
std::thread ioc_thread_
 
std::unique_ptr< interface::SerialPortInterfaceport_
 
config::SerialConfig cfg_
 
net::steady_timer retry_timer_
 
std::vector< uint8_t > rx_
 
std::deque< BufferVarianttx_
 
std::optional< BufferVariantcurrent_write_buffer_
 
bool writing_ = false
 
size_t queued_bytes_ = 0
 
size_t bp_high_
 
size_t bp_limit_
 
size_t bp_low_
 
bool backpressure_active_ = false
 
OnBytes on_bytes_
 
OnState on_state_
 
OnBackpressure on_bp_
 
std::atomic< bool > opened_ {false}
 
ThreadSafeLinkState state_ {LinkState::Idle}
 

Detailed Description

Definition at line 58 of file serial.cc.

Constructor & Destructor Documentation

◆ Impl() [1/2]

Definition at line 88 of file serial.cc.

◆ Impl() [2/2]

unilink::transport::Serial::Impl::Impl ( const config::SerialConfig cfg,
std::unique_ptr< interface::SerialPortInterface port,
net::io_context &  ioc 
)
inline

Definition at line 99 of file serial.cc.

◆ ~Impl()

unilink::transport::Serial::Impl::~Impl ( )
inline

Definition at line 120 of file serial.cc.

Member Function Documentation

◆ close_port()

void unilink::transport::Serial::Impl::close_port ( )
inline

Definition at line 358 of file serial.cc.

◆ do_write()

void unilink::transport::Serial::Impl::do_write ( std::shared_ptr< Serial self)
inline

Definition at line 242 of file serial.cc.

◆ handle_error()

void unilink::transport::Serial::Impl::handle_error ( std::shared_ptr< Serial self,
const char *  where,
const boost::system::error_code &  ec 
)
inline

Definition at line 312 of file serial.cc.

◆ init()

void unilink::transport::Serial::Impl::init ( )
inline

Definition at line 110 of file serial.cc.

◆ notify_state()

void unilink::transport::Serial::Impl::notify_state ( )
inline

Definition at line 365 of file serial.cc.

◆ open_and_configure()

void unilink::transport::Serial::Impl::open_and_configure ( std::shared_ptr< Serial self)
inline

Definition at line 138 of file serial.cc.

◆ perform_cleanup()

void unilink::transport::Serial::Impl::perform_cleanup ( )
inline

Definition at line 297 of file serial.cc.

◆ report_backpressure()

void unilink::transport::Serial::Impl::report_backpressure ( size_t  qb)
inline

Definition at line 373 of file serial.cc.

◆ schedule_retry()

void unilink::transport::Serial::Impl::schedule_retry ( std::shared_ptr< Serial self,
const char *  where,
const boost::system::error_code &  ec 
)
inline

Definition at line 348 of file serial.cc.

◆ start_read()

void unilink::transport::Serial::Impl::start_read ( std::shared_ptr< Serial self)
inline

Definition at line 204 of file serial.cc.

Member Data Documentation

◆ backpressure_active_

bool unilink::transport::Serial::Impl::backpressure_active_ = false

Definition at line 79 of file serial.cc.

◆ bp_high_

size_t unilink::transport::Serial::Impl::bp_high_

Definition at line 76 of file serial.cc.

◆ bp_limit_

size_t unilink::transport::Serial::Impl::bp_limit_

Definition at line 77 of file serial.cc.

◆ bp_low_

size_t unilink::transport::Serial::Impl::bp_low_

Definition at line 78 of file serial.cc.

◆ cfg_

config::SerialConfig unilink::transport::Serial::Impl::cfg_

Definition at line 68 of file serial.cc.

◆ current_write_buffer_

std::optional<BufferVariant> unilink::transport::Serial::Impl::current_write_buffer_

Definition at line 73 of file serial.cc.

◆ ioc_

net::io_context& unilink::transport::Serial::Impl::ioc_

Definition at line 61 of file serial.cc.

◆ ioc_thread_

std::thread unilink::transport::Serial::Impl::ioc_thread_

Definition at line 65 of file serial.cc.

◆ on_bp_

OnBackpressure unilink::transport::Serial::Impl::on_bp_

Definition at line 83 of file serial.cc.

◆ on_bytes_

OnBytes unilink::transport::Serial::Impl::on_bytes_

Definition at line 81 of file serial.cc.

◆ on_state_

OnState unilink::transport::Serial::Impl::on_state_

Definition at line 82 of file serial.cc.

◆ opened_

std::atomic<bool> unilink::transport::Serial::Impl::opened_ {false}

Definition at line 85 of file serial.cc.

◆ owns_ioc_

bool unilink::transport::Serial::Impl::owns_ioc_ {false}

Definition at line 62 of file serial.cc.

◆ port_

std::unique_ptr<interface::SerialPortInterface> unilink::transport::Serial::Impl::port_

Definition at line 67 of file serial.cc.

◆ queued_bytes_

size_t unilink::transport::Serial::Impl::queued_bytes_ = 0

Definition at line 75 of file serial.cc.

◆ retry_timer_

net::steady_timer unilink::transport::Serial::Impl::retry_timer_

Definition at line 69 of file serial.cc.

◆ rx_

std::vector<uint8_t> unilink::transport::Serial::Impl::rx_

Definition at line 71 of file serial.cc.

◆ started_

bool unilink::transport::Serial::Impl::started_ = false

Definition at line 59 of file serial.cc.

◆ state_

ThreadSafeLinkState unilink::transport::Serial::Impl::state_ {LinkState::Idle}

Definition at line 86 of file serial.cc.

◆ stopping_

std::atomic<bool> unilink::transport::Serial::Impl::stopping_ {false}

Definition at line 60 of file serial.cc.

◆ strand_

net::strand<net::io_context::executor_type> unilink::transport::Serial::Impl::strand_

Definition at line 63 of file serial.cc.

◆ tx_

std::deque<BufferVariant> unilink::transport::Serial::Impl::tx_

Definition at line 72 of file serial.cc.

◆ work_guard_

std::unique_ptr<net::executor_work_guard<net::io_context::executor_type> > unilink::transport::Serial::Impl::work_guard_

Definition at line 64 of file serial.cc.

◆ writing_

bool unilink::transport::Serial::Impl::writing_ = false

Definition at line 74 of file serial.cc.


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