Coverage Report

Created: 2025-10-13 07:02

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/logging-log4cxx/src/main/include/log4cxx/helpers/appenderattachableimpl.h
Line
Count
Source
1
/*
2
 * Licensed to the Apache Software Foundation (ASF) under one or more
3
 * contributor license agreements.  See the NOTICE file distributed with
4
 * this work for additional information regarding copyright ownership.
5
 * The ASF licenses this file to You under the Apache License, Version 2.0
6
 * (the "License"); you may not use this file except in compliance with
7
 * the License.  You may obtain a copy of the License at
8
 *
9
 *      http://www.apache.org/licenses/LICENSE-2.0
10
 *
11
 * Unless required by applicable law or agreed to in writing, software
12
 * distributed under the License is distributed on an "AS IS" BASIS,
13
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
 * See the License for the specific language governing permissions and
15
 * limitations under the License.
16
 */
17
18
#ifndef _LOG4CXX_HELPERS_APPENDER_ATTACHABLE_IMPL_H
19
#define _LOG4CXX_HELPERS_APPENDER_ATTACHABLE_IMPL_H
20
21
22
#include <log4cxx/spi/appenderattachable.h>
23
#include <log4cxx/helpers/pool.h>
24
#include <log4cxx/log4cxx.h>
25
26
namespace LOG4CXX_NS
27
{
28
namespace spi
29
{
30
class LoggingEvent;
31
typedef std::shared_ptr<LoggingEvent> LoggingEventPtr;
32
}
33
34
namespace helpers
35
{
36
37
class LOG4CXX_EXPORT AppenderAttachableImpl :
38
  public virtual spi::AppenderAttachable
39
{
40
  protected:
41
    AppenderList& appenderList();
42
43
  public:
44
    /**
45
     *   Create new instance.
46
     */
47
    AppenderAttachableImpl();
48
#if LOG4CXX_ABI_VERSION <= 15
49
    [[ deprecated( "Pool is no longer required" ) ]]
50
    AppenderAttachableImpl(Pool& pool);
51
#endif
52
    ~AppenderAttachableImpl();
53
54
    DECLARE_ABSTRACT_LOG4CXX_OBJECT(AppenderAttachableImpl)
55
0
    BEGIN_LOG4CXX_CAST_MAP()
56
0
    LOG4CXX_CAST_ENTRY(AppenderAttachableImpl)
57
0
    LOG4CXX_CAST_ENTRY(spi::AppenderAttachable)
58
0
    END_LOG4CXX_CAST_MAP()
59
60
    // Methods
61
    /**
62
     * Add an appender.
63
     */
64
    void addAppender(const AppenderPtr newAppender) override;
65
66
    /**
67
     Call the <code>doAppend</code> method on all attached appenders.
68
    */
69
    int appendLoopOnAppenders(const spi::LoggingEventPtr& event,
70
      LOG4CXX_NS::helpers::Pool& p);
71
72
    /**
73
     * Get all previously added appenders as an Enumeration.
74
     */
75
    AppenderList getAllAppenders() const override;
76
77
    /**
78
     * Get an appender by name.
79
     */
80
    AppenderPtr getAppender(const LogString& name) const override;
81
82
    /**
83
     Returns <code>true</code> if the specified appender is in the
84
     list of attached appenders, <code>false</code> otherwise.
85
    */
86
    bool isAttached(const AppenderPtr appender) const override;
87
88
    /**
89
     * Remove all previously added appenders.
90
     */
91
    void removeAllAppenders() override;
92
93
    /**
94
     * Remove the appender passed as parameter from the list of appenders.
95
     */
96
    void removeAppender(const AppenderPtr appender) override;
97
98
    /**
99
     * Remove the appender with the name passed as parameter from the
100
     * list of appenders.
101
     */
102
    void removeAppender(const LogString& name) override;
103
104
    /**
105
     * Replace \c oldAppender  with \c newAppender.
106
     * @return true if oldAppender was replaced with newAppender.
107
     */
108
    bool replaceAppender(const AppenderPtr& oldAppender, const AppenderPtr& newAppender) LOG4CXX_16_VIRTUAL_SPECIFIER;
109
110
    /**
111
     * Replace any previously added appenders with \c newList.
112
     */
113
    void replaceAppenders(const AppenderList& newList) LOG4CXX_16_VIRTUAL_SPECIFIER;
114
115
  private:
116
    LOG4CXX_DECLARE_PRIVATE_MEMBER_PTR(priv_data, m_priv)
117
118
    AppenderAttachableImpl(const AppenderAttachableImpl&);
119
    AppenderAttachableImpl& operator=(const AppenderAttachableImpl&);
120
};
121
122
LOG4CXX_PTR_DEF(AppenderAttachableImpl);
123
124
}
125
}
126
127
128
#endif //_LOG4CXX_HELPERS_APPENDER_ATTACHABLE_IMPL_H