Coverage Report

Created: 2026-05-30 06:57

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
#if LOG4CXX_ABI_VERSION <= 15
67
    /**
68
     Call the <code>doAppend</code> method on all attached appenders.
69
    @deprecated This function is deprecated and will be removed in a future version.
70
    */
71
    [[ deprecated( "Pool is no longer required" ) ]]
72
    int appendLoopOnAppenders(const spi::LoggingEventPtr& event,
73
      LOG4CXX_NS::helpers::Pool& p);
74
#endif
75
    /**
76
     Send \c event to all attached appenders.
77
    */
78
    int appendLoopOnAppenders(const spi::LoggingEventPtr& event);
79
80
    /**
81
     * Get all previously added appenders as an Enumeration.
82
     */
83
    AppenderList getAllAppenders() const override;
84
85
    /**
86
     * Get an appender by name.
87
     */
88
    AppenderPtr getAppender(const LogString& name) const override;
89
90
    /**
91
     Returns <code>true</code> if the specified appender is in the
92
     list of attached appenders, <code>false</code> otherwise.
93
    */
94
    bool isAttached(const AppenderPtr appender) const override;
95
96
    /**
97
     * Remove all previously added appenders.
98
     */
99
    void removeAllAppenders() override;
100
101
    /**
102
     * Remove the appender passed as parameter from the list of appenders.
103
     */
104
    void removeAppender(const AppenderPtr appender) override;
105
106
    /**
107
     * Remove the appender with the name passed as parameter from the
108
     * list of appenders.
109
     */
110
    void removeAppender(const LogString& name) override;
111
112
    /**
113
     * Replace \c oldAppender  with \c newAppender.
114
     * @return true if oldAppender was replaced with newAppender.
115
     */
116
    bool replaceAppender(const AppenderPtr& oldAppender, const AppenderPtr& newAppender) LOG4CXX_16_VIRTUAL_SPECIFIER;
117
118
    /**
119
     * Replace any previously added appenders with \c newList.
120
     */
121
    void replaceAppenders(const AppenderList& newList) LOG4CXX_16_VIRTUAL_SPECIFIER;
122
123
  private:
124
    LOG4CXX_DECLARE_PRIVATE_MEMBER_PTR(priv_data, m_priv)
125
126
    AppenderAttachableImpl(const AppenderAttachableImpl&);
127
    AppenderAttachableImpl& operator=(const AppenderAttachableImpl&);
128
};
129
130
LOG4CXX_PTR_DEF(AppenderAttachableImpl);
131
132
}
133
}
134
135
136
#endif //_LOG4CXX_HELPERS_APPENDER_ATTACHABLE_IMPL_H