48 ConfigServer::ConfigServer(boost::asio::io_service& a_IOService, boost::asio::ip::tcp::tcp::socket& a_TcpSocket): m_IOService(a_IOService) {
50 m_FrameEndpoint = std::make_shared<FrameEndpoint>(a_IOService, a_TcpSocket);
59 m_FrameEndpoint->SetOnFrameCallback ([
this](std::shared_ptr<Frame> a_Frame)->
bool{
return OnFrame(a_Frame); });
60 m_FrameEndpoint->SetOnClosedCallback ([
this](){ OnClosed(); });
63 void ConfigServer::Start(std::shared_ptr<GatewayClientHandlerCollection> a_GatewayClientHandlerCollection,
64 std::shared_ptr<HdlcdClientHandlerCollection> a_HdlcdClientHandlerCollection) {
65 assert(a_GatewayClientHandlerCollection);
66 assert(a_HdlcdClientHandlerCollection);
67 m_GatewayClientHandlerCollection = a_GatewayClientHandlerCollection;
68 m_HdlcdClientHandlerCollection = a_HdlcdClientHandlerCollection;
69 m_FrameEndpoint->Start();
74 m_GatewayClientHandlerCollection.reset();
75 m_HdlcdClientHandlerCollection.reset();
78 m_FrameEndpoint->Close();
79 if (m_OnClosedCallback) {
139 bool ConfigServer::OnFrame(std::shared_ptr<Frame> a_Frame) {
142 auto l_ConfigFrame = std::dynamic_pointer_cast<
ConfigFrame>(a_Frame);
143 assert(l_ConfigFrame);
144 switch (l_ConfigFrame->GetConfigFrameType()) {
146 m_GatewayClientHandlerCollection->CleanAll();
150 auto l_GatewayClientCreate = std::dynamic_pointer_cast<
GatewayClientCreate>(l_ConfigFrame);
151 m_GatewayClientHandlerCollection->CreateClient(l_GatewayClientCreate->GetReferenceNbr(),
152 l_GatewayClientCreate->GetRemoteAddress(),
153 l_GatewayClientCreate->GetRemotePortNbr());
158 m_GatewayClientHandlerCollection->DestroyClient(l_GatewayClientDestroy->GetReferenceNbr());
162 m_HdlcdClientHandlerCollection->CleanAll();
166 auto l_HdlcdClientCreate = std::dynamic_pointer_cast<
HdlcdClientCreate>(l_ConfigFrame);
167 m_HdlcdClientHandlerCollection->CreateHdlcdClient(l_HdlcdClientCreate->GetRemoteAddress(), l_HdlcdClientCreate->GetTcpPortNbr(), l_HdlcdClientCreate->GetSerialPortNbr());
171 auto l_HdlcdClientDestroy = std::dynamic_pointer_cast<
HdlcdClientDestroy>(l_ConfigFrame);
172 m_HdlcdClientHandlerCollection->DestroyHdlcdClient(l_HdlcdClientDestroy->GetSerialPortNbr());
176 auto l_HdlcdClientSuspend = std::dynamic_pointer_cast<
HdlcdClientSuspend>(l_ConfigFrame);
177 m_HdlcdClientHandlerCollection->SuspendHdlcdClient(l_HdlcdClientSuspend->GetSerialPortNbr());
181 auto l_HdlcdClientResume = std::dynamic_pointer_cast<
HdlcdClientResume>(l_ConfigFrame);
182 m_HdlcdClientHandlerCollection->ResumeHdlcdClient(l_HdlcdClientResume->GetSerialPortNbr());
193 void ConfigServer::OnClosed() {
static HdlcdClientDestroyed Create(uint16_t a_SerialPortNbr)
void HdlcdClientNewStatus(uint16_t a_SerialPortNbr, bool a_bIsResumed, bool a_bIsAlive)
void Start(std::shared_ptr< GatewayClientHandlerCollection > a_GatewayClientHandlerCollection, std::shared_ptr< HdlcdClientHandlerCollection > a_HdlcdClientHandlerCollection)
void HdlcdClientConnected(uint16_t a_SerialPortNbr)
void HdlcdClientCreated(uint16_t a_SerialPortNbr)
static std::shared_ptr< GatewayClientCreate > CreateDeserializedFrame()
static GatewayClientDestroyed Create(uint16_t a_ReferenceNbr)
static GatewayClientConnected Create(uint16_t a_ReferenceNbr)
void HdlcdClientDisconnected(uint16_t a_SerialPortNbr)
void GatewayClientCreated(uint16_t a_ReferenceNbr)
void GatewayClientConnected(uint16_t a_ReferenceNbr)
static std::shared_ptr< GatewayClientCleanup > CreateDeserializedFrame()
void GatewayClientDestroyed(uint16_t a_ReferenceNbr)
static GatewayClientDisconnected Create(uint16_t a_ReferenceNbr)
static GatewayClientCreated Create(uint16_t a_ReferenceNbr)
void HdlcdClientDestroyed(uint16_t a_SerialPortNbr)
void GatewayClientDisconnected(uint16_t a_ReferenceNbr)
static HdlcdClientDisconnected Create(uint16_t a_SerialPortNbr)
static GatewayClientError Create(uint16_t a_ReferenceNbr, uint16_t a_ErrorCode)
static HdlcdClientConnected Create(uint16_t a_SerialPortNbr)
static std::shared_ptr< HdlcdClientCreate > CreateDeserializedFrame()
void GatewayClientError(uint16_t a_ReferenceNbr, E_GATEWAY_CLIENT_ERROR a_ErrorCode)
static HdlcdClientError Create(uint16_t a_SerialPortNbr, uint16_t a_ErrorCode)
void HdlcdClientError(uint16_t a_SerialPortNbr, E_HDLCD_CLIENT_ERROR a_ErrorCode)
static std::shared_ptr< HdlcdClientCleanup > CreateDeserializedFrame()
static std::shared_ptr< HdlcdClientDestroy > CreateDeserializedFrame()
ConfigServer(boost::asio::io_service &a_IOService, boost::asio::ip::tcp::tcp::socket &a_TcpSocket)
static std::shared_ptr< HdlcdClientResume > CreateDeserializedFrame()
static HdlcdClientNewStatus Create(uint16_t a_SerialPortNbr, bool a_bIsResumed, bool a_bIsAlive)
static HdlcdClientCreated Create(uint16_t a_SerialPortNbr)
static std::shared_ptr< GatewayClientDestroy > CreateDeserializedFrame()
static std::shared_ptr< HdlcdClientSuspend > CreateDeserializedFrame()