11#include " DMDUtil/DMD.h"
2-
32#include " DMDUtil/Config.h"
43#include " DMDUtil/ConsoleDMD.h"
54#include " DMDUtil/LevelDMD.h"
1514#include < chrono>
1615#include < cstring>
1716
17+ #include " sockpp/tcp_connector.h"
18+
1819#include " AlphaNumeric.h"
1920#include " FrameUtil.h"
2021#include " Logger.h"
@@ -42,6 +43,29 @@ void ZEDMDCALLBACK ZeDMDLogCallback(const char* format, va_list args, const void
4243 Log (DMDUtil_LogLevel_INFO, " %s" , buffer);
4344}
4445
46+ class DMDServerConnector
47+ {
48+ public:
49+ ~DMDServerConnector () { delete m_pConnector; }
50+
51+ static DMDServerConnector* Create (const char * pAddress, int port)
52+ {
53+ sockpp::tcp_connector* pConnector = new sockpp::tcp_connector ({pAddress, (in_port_t )port});
54+ return pConnector ? new DMDServerConnector (pConnector) : nullptr ;
55+ }
56+
57+ ssize_t Write (const void * buf, size_t size)
58+ {
59+ return m_pConnector->write_n (buf, size);
60+ }
61+
62+ void Close () { m_pConnector->close (); }
63+
64+ private:
65+ DMDServerConnector (sockpp::tcp_connector* pConnector) : m_pConnector(pConnector) {}
66+ sockpp::tcp_connector* m_pConnector;
67+ };
68+
4569bool DMD::m_finding = false ;
4670
4771DMD::DMD ()
@@ -170,7 +194,7 @@ DMD::~DMD()
170194
171195 if (m_pDMDServerConnector)
172196 {
173- m_pDMDServerConnector->close ();
197+ m_pDMDServerConnector->Close ();
174198 delete m_pDMDServerConnector;
175199 m_pDMDServerConnector = nullptr ;
176200 }
@@ -184,8 +208,7 @@ bool DMD::ConnectDMDServer()
184208 sockpp::initialize ();
185209 Log (DMDUtil_LogLevel_INFO, " Connecting DMDServer on %s:%d" , pConfig->GetDMDServerAddr (),
186210 pConfig->GetDMDServerPort ());
187- m_pDMDServerConnector =
188- new sockpp::tcp_connector ({pConfig->GetDMDServerAddr (), (in_port_t )pConfig->GetDMDServerPort ()});
211+ m_pDMDServerConnector = DMDServerConnector::Create (pConfig->GetDMDServerAddr (), pConfig->GetDMDServerPort ());
189212 if (!m_pDMDServerConnector)
190213 {
191214 Log (DMDUtil_LogLevel_INFO, " DMDServer connection to %s:%d failed!" , pConfig->GetDMDServerAddr (),
@@ -353,13 +376,13 @@ void DMD::QueueUpdate(const std::shared_ptr<Update> dmdUpdate, bool buffered)
353376 StreamHeader streamHeader;
354377 streamHeader.buffered = (uint8_t )buffered;
355378 streamHeader.disconnectOthers = (uint8_t )m_dmdServerDisconnectOthers;
356- m_pDMDServerConnector->write_n (&streamHeader, sizeof (StreamHeader));
379+ m_pDMDServerConnector->Write (&streamHeader, sizeof (StreamHeader));
357380 PathsHeader pathsHeader;
358381 strcpy (pathsHeader.name , m_romName);
359382 strcpy (pathsHeader.altColorPath , m_altColorPath);
360383 strcpy (pathsHeader.pupVideosPath , m_pupVideosPath);
361- m_pDMDServerConnector->write_n (&pathsHeader, sizeof (PathsHeader));
362- m_pDMDServerConnector->write_n (dmdUpdate.get (), sizeof (Update));
384+ m_pDMDServerConnector->Write (&pathsHeader, sizeof (PathsHeader));
385+ m_pDMDServerConnector->Write (dmdUpdate.get (), sizeof (Update));
363386
364387 if (streamHeader.disconnectOthers != 0 ) m_dmdServerDisconnectOthers = false ;
365388 }
0 commit comments