34 std::shared_ptr<std::shared_ptr<SerialPortHandler>> l_SerialPortHandler;
35 bool l_HasToBeStarted =
false;
38 auto& l_SerialPortHandlerWeak(m_SerialPortHandlerMap[a_SerialPortName]);
39 l_SerialPortHandler = l_SerialPortHandlerWeak.lock();
40 if (!l_SerialPortHandler) {
41 auto l_NewSerialPortHandler = std::make_shared<SerialPortHandler>(a_SerialPortName, shared_from_this(), m_IOService);
42 std::shared_ptr<std::shared_ptr<SerialPortHandler>> l_NewSerialPortHandlerStopper(
new std::shared_ptr<SerialPortHandler>(l_NewSerialPortHandler), [=](std::shared_ptr<SerialPortHandler>* todelete){ (*todelete)->Stop();
delete(todelete); });
43 l_SerialPortHandler = l_NewSerialPortHandlerStopper;
44 l_SerialPortHandlerWeak = l_SerialPortHandler;
45 l_HasToBeStarted =
true;
49 l_SerialPortHandler.get()->get()->AddHdlcdServerHandler(a_HdlcdServerHandler);
50 if (l_HasToBeStarted) {
51 if (l_SerialPortHandler.get()->get()->Start() ==
false) {
52 l_SerialPortHandler.reset();
56 return l_SerialPortHandler;
60 assert(a_SerialPortHandler);
61 for (
auto it = m_SerialPortHandlerMap.begin(); it != m_SerialPortHandlerMap.end(); ++it) {
62 if (
auto cph = it->second.lock()) {
63 if (*(cph.get()) == a_SerialPortHandler) {
64 m_SerialPortHandlerMap.erase(it);
The HDLC Deamon implements the HDLC protocol to easily talk to devices connected via serial communica...
void DeregisterSerialPortHandler(std::shared_ptr< SerialPortHandler > a_SerialPortHandler)
SerialPortHandlerCollection(boost::asio::io_service &a_IOService)
std::shared_ptr< std::shared_ptr< SerialPortHandler > > GetSerialPortHandler(const std::string &a_SerialPortName, std::shared_ptr< HdlcdServerHandler > a_HdlcdServerHandler)
The HDLC Deamon implements the HDLC protocol to easily talk to devices connected via serial communica...
The HDLC Deamon implements the HDLC protocol to easily talk to devices connected via serial communica...