Skip to content

Commit 3985458

Browse files
Simplify WriterAppender interface in the next ABI version (#508)
Co-authored-by: Stephen Webb <[email protected]>
1 parent 295facf commit 3985458

11 files changed

+84
-76
lines changed

src/main/cpp/fileappender.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ void FileAppender::setFileInternal(
323323

324324
try
325325
{
326-
outStream = FileOutputStreamPtr(new FileOutputStream(filename, append1));
326+
outStream = std::make_shared<FileOutputStream>(filename, append1);
327327
}
328328
catch (IOException&)
329329
{
@@ -336,7 +336,7 @@ void FileAppender::setFileInternal(
336336

337337
if (!parentDir.exists(p) && parentDir.mkdirs(p))
338338
{
339-
outStream = OutputStreamPtr(new FileOutputStream(filename, append1));
339+
outStream = std::make_shared<FileOutputStream>(filename, append1);
340340
}
341341
else
342342
{

src/main/cpp/multiprocessrollingfileappender.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ void MultiprocessRollingFileAppender::subAppend(const LoggingEventPtr& event, Po
428428
@param os output stream, may not be null.
429429
@return new writer.
430430
*/
431-
WriterPtr MultiprocessRollingFileAppender::createWriter(OutputStreamPtr& os)
431+
WriterPtr MultiprocessRollingFileAppender::createWriter(LOG4CXX_16_CONST OutputStreamPtr& os)
432432
{
433433
auto fos = LOG4CXX_NS::cast<FileOutputStream>(os);
434434
if( fos )

src/main/cpp/outputstreamwriter.cpp

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,38 +27,43 @@ using namespace LOG4CXX_NS::helpers;
2727

2828
IMPLEMENT_LOG4CXX_OBJECT(OutputStreamWriter)
2929

30-
struct OutputStreamWriter::OutputStreamWriterPrivate{
31-
OutputStreamWriterPrivate(OutputStreamPtr& out1) : out(out1), enc(CharsetEncoder::getDefaultEncoder()){}
32-
33-
OutputStreamWriterPrivate(OutputStreamPtr& out1,
34-
CharsetEncoderPtr& enc1)
35-
: out(out1), enc(enc1){}
30+
struct OutputStreamWriter::OutputStreamWriterPrivate
31+
{
32+
OutputStreamWriterPrivate
33+
( const OutputStreamPtr& out1
34+
, const CharsetEncoderPtr& enc1 = CharsetEncoder::getDefaultEncoder()
35+
)
36+
: out(out1)
37+
, enc(enc1)
38+
{}
3639

3740
OutputStreamPtr out;
3841
CharsetEncoderPtr enc;
3942
};
4043

41-
OutputStreamWriter::OutputStreamWriter(OutputStreamPtr& out1)
42-
: m_priv(std::make_unique<OutputStreamWriterPrivate>(out1))
44+
OutputStreamWriter::OutputStreamWriter(LOG4CXX_16_CONST OutputStreamPtr& out)
45+
: m_priv(std::make_unique<OutputStreamWriterPrivate>(out))
4346
{
44-
if (out1 == 0)
47+
if (!out)
4548
{
46-
throw NullPointerException(LOG4CXX_STR("out parameter may not be null."));
49+
throw NullPointerException(LOG4CXX_STR("OutputStream parameter may not be null."));
4750
}
4851
}
4952

50-
OutputStreamWriter::OutputStreamWriter(OutputStreamPtr& out1,
51-
CharsetEncoderPtr& enc1)
52-
: m_priv(std::make_unique<OutputStreamWriterPrivate>(out1, enc1))
53+
OutputStreamWriter::OutputStreamWriter
54+
( LOG4CXX_16_CONST OutputStreamPtr& out
55+
, LOG4CXX_16_CONST CharsetEncoderPtr& enc
56+
)
57+
: m_priv(std::make_unique<OutputStreamWriterPrivate>(out, enc))
5358
{
54-
if (out1 == 0)
59+
if (!out)
5560
{
56-
throw NullPointerException(LOG4CXX_STR("out parameter may not be null."));
61+
throw NullPointerException(LOG4CXX_STR("OutputStream parameter may not be null."));
5762
}
5863

59-
if (enc1 == 0)
64+
if (!enc)
6065
{
61-
throw NullPointerException(LOG4CXX_STR("enc parameter may not be null."));
66+
throw NullPointerException(LOG4CXX_STR("CharsetEncoder parameter may not be null."));
6267
}
6368
}
6469

src/main/cpp/rollingfileappender.cpp

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -357,10 +357,11 @@ bool RollingFileAppender::rolloverInternal(Pool& p)
357357
setFileInternal(rollover1->getActiveFileName());
358358
// Call activateOptions to create any intermediate directories(if required)
359359
FileAppender::activateOptionsInternal(p);
360-
OutputStreamPtr os(new FileOutputStream(
361-
rollover1->getActiveFileName(), rollover1->getAppend()));
362-
WriterPtr newWriter(createWriter(os));
363-
setWriterInternal(newWriter);
360+
OutputStreamPtr os = std::make_shared<FileOutputStream>
361+
( rollover1->getActiveFileName()
362+
, rollover1->getAppend()
363+
);
364+
setWriterInternal(createWriter(os));
364365

365366
bool success = true;
366367

@@ -518,16 +519,19 @@ class CountingOutputStream : public OutputStream
518519
* @param os output stream to wrap.
519520
* @param rfa rolling file appender to inform.
520521
*/
521-
CountingOutputStream(
522-
OutputStreamPtr& os1, RollingFileAppender* rfa1) :
523-
os(os1), rfa(rfa1)
522+
CountingOutputStream
523+
( const OutputStreamPtr& os1
524+
, RollingFileAppender* rfa1
525+
)
526+
: os(os1)
527+
, rfa(rfa1)
524528
{
525529
}
526530

527531
/**
528532
* {@inheritDoc}
529533
*/
530-
void close(Pool& p)
534+
void close(Pool& p) override
531535
{
532536
os->close(p);
533537
rfa = 0;
@@ -536,15 +540,15 @@ class CountingOutputStream : public OutputStream
536540
/**
537541
* {@inheritDoc}
538542
*/
539-
void flush(Pool& p)
543+
void flush(Pool& p) override
540544
{
541545
os->flush(p);
542546
}
543547

544548
/**
545549
* {@inheritDoc}
546550
*/
547-
void write(ByteBuffer& buf, Pool& p)
551+
void write(ByteBuffer& buf, Pool& p) override
548552
{
549553
os->write(buf, p);
550554

@@ -566,7 +570,7 @@ class CountingOutputStream : public OutputStream
566570
@param os output stream, may not be null.
567571
@return new writer.
568572
*/
569-
WriterPtr RollingFileAppender::createWriter(OutputStreamPtr& os)
573+
WriterPtr RollingFileAppender::createWriter(LOG4CXX_16_CONST OutputStreamPtr& os)
570574
{
571575
OutputStreamPtr cos = std::make_shared<CountingOutputStream>(os, this);
572576
return FileAppender::createWriter(cos);

src/main/cpp/writerappender.cpp

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,18 +36,26 @@ WriterAppender::WriterAppender() :
3636
{
3737
}
3838

39-
WriterAppender::WriterAppender(const LayoutPtr& layout1,
40-
LOG4CXX_NS::helpers::WriterPtr& writer1)
41-
: AppenderSkeleton (std::make_unique<WriterAppenderPriv>(layout1, writer1))
39+
#if LOG4CXX_ABI_VERSION <= 15
40+
WriterAppender::WriterAppender(const LayoutPtr& layout, helpers::WriterPtr& writer)
41+
: AppenderSkeleton (std::make_unique<WriterAppenderPriv>(layout, writer))
4242
{
4343
Pool p;
4444
activateOptions(p);
4545
}
4646

47-
WriterAppender::WriterAppender(const LayoutPtr& layout1)
48-
: AppenderSkeleton (std::make_unique<WriterAppenderPriv>(layout1))
47+
WriterAppender::WriterAppender(const LayoutPtr& layout)
48+
: AppenderSkeleton (std::make_unique<WriterAppenderPriv>(layout))
4949
{
5050
}
51+
#else
52+
WriterAppender::WriterAppender(const LayoutPtr& layout, const helpers::WriterPtr& writer)
53+
: AppenderSkeleton(std::make_unique<WriterAppenderPriv>(layout, writer))
54+
{
55+
Pool p;
56+
activateOptions(p);
57+
}
58+
#endif
5159

5260
WriterAppender::WriterAppender(std::unique_ptr<WriterAppenderPriv> priv)
5361
: AppenderSkeleton (std::move(priv))
@@ -182,7 +190,7 @@ void WriterAppender::closeWriter()
182190
<code>encoding</code> property. If the encoding value is
183191
specified incorrectly the writer will be opened using the default
184192
system encoding (an error message will be printed to the loglog. */
185-
WriterPtr WriterAppender::createWriter(OutputStreamPtr& os)
193+
WriterPtr WriterAppender::createWriter(LOG4CXX_16_CONST OutputStreamPtr& os)
186194
{
187195

188196
LogString enc(getEncoding());
@@ -213,7 +221,7 @@ WriterPtr WriterAppender::createWriter(OutputStreamPtr& os)
213221
}
214222
}
215223

216-
return WriterPtr(new OutputStreamWriter(os, encoder));
224+
return std::make_shared<OutputStreamWriter>(os, encoder);
217225
}
218226

219227
LogString WriterAppender::getEncoding() const

src/main/include/log4cxx/fileappender.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ class LOG4CXX_EXPORT FileAppender : public WriterAppender
219219
static LogString stripDuplicateBackslashes(const LogString& name);
220220

221221
protected:
222-
void activateOptionsInternal(LOG4CXX_NS::helpers::Pool& p);
222+
void activateOptionsInternal(helpers::Pool& p);
223223

224224
/**
225225
Sets and <i>opens</i> the file where the log output will
@@ -243,7 +243,7 @@ class LOG4CXX_EXPORT FileAppender : public WriterAppender
243243
*/
244244
void setFileInternal(const LogString& file, bool append,
245245
bool bufferedIO, size_t bufferSize,
246-
LOG4CXX_NS::helpers::Pool& p);
246+
helpers::Pool& p);
247247

248248
void setFileInternal(const LogString& file);
249249

src/main/include/log4cxx/helpers/outputstreamwriter.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@
2222
#include <log4cxx/helpers/outputstream.h>
2323
#include <log4cxx/helpers/charsetencoder.h>
2424

25+
#if 15 < LOG4CXX_ABI_VERSION
26+
#define LOG4CXX_16_CONST const
27+
#else
28+
#define LOG4CXX_16_CONST
29+
#endif
30+
2531
namespace LOG4CXX_NS
2632
{
2733

@@ -43,8 +49,8 @@ class LOG4CXX_EXPORT OutputStreamWriter : public Writer
4349
LOG4CXX_CAST_ENTRY_CHAIN(Writer)
4450
END_LOG4CXX_CAST_MAP()
4551

46-
OutputStreamWriter(OutputStreamPtr& out);
47-
OutputStreamWriter(OutputStreamPtr& out, CharsetEncoderPtr& enc);
52+
OutputStreamWriter(LOG4CXX_16_CONST OutputStreamPtr& out);
53+
OutputStreamWriter(LOG4CXX_16_CONST OutputStreamPtr& out, LOG4CXX_16_CONST CharsetEncoderPtr& enc);
4854
~OutputStreamWriter();
4955

5056
void close(Pool& p) override;

src/main/include/log4cxx/private/writerappender_priv.h

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -42,24 +42,11 @@ struct WriterAppender::WriterAppenderPriv : public AppenderSkeleton::AppenderSke
4242
{
4343
}
4444

45-
WriterAppenderPriv(const LayoutPtr& layout1,
46-
LOG4CXX_NS::helpers::WriterPtr& writer1) :
47-
AppenderSkeletonPrivate(layout1),
48-
immediateFlush(true),
49-
writer(writer1)
50-
#if LOG4CXX_EVENTS_AT_EXIT
51-
, atExitRegistryRaii{ [this]{flush();} }
52-
#endif
53-
{
54-
}
55-
56-
WriterAppenderPriv(const LayoutPtr& layout1) :
57-
AppenderSkeletonPrivate(layout1),
58-
immediateFlush(true)
59-
#if LOG4CXX_EVENTS_AT_EXIT
60-
, atExitRegistryRaii{ [this]{flush();} }
61-
#endif
45+
WriterAppenderPriv(const LayoutPtr& layout1, const helpers::WriterPtr& writer1 = helpers::WriterPtr())
46+
: WriterAppenderPriv()
6247
{
48+
this->layout = layout1;
49+
this->writer = writer1;
6350
}
6451

6552
void flush()
@@ -94,7 +81,7 @@ struct WriterAppender::WriterAppenderPriv : public AppenderSkeleton::AppenderSke
9481
/**
9582
* This is the {@link Writer Writer} where we will write to.
9683
*/
97-
LOG4CXX_NS::helpers::WriterPtr writer;
84+
helpers::WriterPtr writer;
9885

9986
#if LOG4CXX_EVENTS_AT_EXIT
10087
helpers::AtExitRegistry::Raii atExitRegistryRaii;

src/main/include/log4cxx/rolling/multiprocessrollingfileappender.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ class LOG4CXX_EXPORT MultiprocessRollingFileAppender : public RollingFileAppende
9191
@param os output stream, may not be null.
9292
@return new writer.
9393
*/
94-
helpers::WriterPtr createWriter(helpers::OutputStreamPtr& os) override;
94+
helpers::WriterPtr createWriter(LOG4CXX_16_CONST helpers::OutputStreamPtr& os) override;
9595

9696
private:
9797
/**

src/main/include/log4cxx/rolling/rollingfileappender.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ class LOG4CXX_EXPORT RollingFileAppender : public FileAppender
220220
@param os output stream, may not be null.
221221
@return new writer.
222222
*/
223-
helpers::WriterPtr createWriter(helpers::OutputStreamPtr& os) override;
223+
helpers::WriterPtr createWriter(LOG4CXX_16_CONST helpers::OutputStreamPtr& os) override;
224224

225225
public:
226226
/**

0 commit comments

Comments
 (0)