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

Reply via email to