This is an automated email from the ASF dual-hosted git repository. rmiddleton pushed a commit to branch LOGCXX-510 in repository https://gitbox.apache.org/repos/asf/logging-log4cxx.git
commit 56e99877270ff03214d712940b860bada1e41d51 Author: Robert Middleton <[email protected]> AuthorDate: Sun Nov 28 11:28:40 2021 -0500 Made syslogwriter ABI-stable --- src/main/cpp/syslogwriter.cpp | 24 ++++++++++++++++++------ src/main/include/log4cxx/helpers/syslogwriter.h | 7 +++---- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/main/cpp/syslogwriter.cpp b/src/main/cpp/syslogwriter.cpp index b3e9a81..ad8c92e 100644 --- a/src/main/cpp/syslogwriter.cpp +++ b/src/main/cpp/syslogwriter.cpp @@ -29,12 +29,22 @@ using namespace log4cxx; using namespace log4cxx::helpers; +struct SyslogWriter::SyslogWriterPrivate { + SyslogWriterPrivate(const LogString& syslogHost1, int syslogHostPort1) + : syslogHost(syslogHost1), syslogHostPort(syslogHostPort1){} + + LogString syslogHost; + int syslogHostPort; + InetAddressPtr address; + DatagramSocketPtr ds; +}; + SyslogWriter::SyslogWriter(const LogString& syslogHost1, int syslogHostPort1) - : syslogHost(syslogHost1), syslogHostPort(syslogHostPort1) + : m_priv(std::make_unique<SyslogWriterPrivate>(syslogHost1, syslogHostPort1)) { try { - this->address = InetAddress::getByName(syslogHost1); + m_priv->address = InetAddress::getByName(syslogHost1); } catch (UnknownHostException& e) { @@ -44,7 +54,7 @@ SyslogWriter::SyslogWriter(const LogString& syslogHost1, int syslogHostPort1) try { - this->ds = DatagramSocketPtr(new DatagramSocket()); + m_priv->ds = DatagramSocketPtr(new DatagramSocket()); } catch (SocketException& e) { @@ -53,16 +63,18 @@ SyslogWriter::SyslogWriter(const LogString& syslogHost1, int syslogHostPort1) } } +SyslogWriter::~SyslogWriter(){} + void SyslogWriter::write(const LogString& source) { - if (this->ds != 0 && this->address != 0) + if (m_priv->ds != 0 && m_priv->address != 0) { LOG4CXX_ENCODE_CHAR(data, source); DatagramPacketPtr packet( new DatagramPacket((void*) data.data(), data.length(), - address, syslogHostPort)); + m_priv->address, m_priv->syslogHostPort)); - ds->send(packet); + m_priv->ds->send(packet); } } diff --git a/src/main/include/log4cxx/helpers/syslogwriter.h b/src/main/include/log4cxx/helpers/syslogwriter.h index 2071f01..547459b 100644 --- a/src/main/include/log4cxx/helpers/syslogwriter.h +++ b/src/main/include/log4cxx/helpers/syslogwriter.h @@ -41,13 +41,12 @@ class LOG4CXX_EXPORT SyslogWriter public: #define SYSLOG_PORT 514 SyslogWriter(const LogString& syslogHost, int syslogHostPort = SYSLOG_PORT); + ~SyslogWriter(); void write(const LogString& string); private: - LogString syslogHost; - int syslogHostPort; - InetAddressPtr address; - DatagramSocketPtr ds; + struct SyslogWriterPrivate; + std::unique_ptr<SyslogWriterPrivate> m_priv; }; } // namespace helpers } // namespace log4cxx
