summaryrefslogtreecommitdiff
path: root/ext/Log4Qt/src/helpers/appenderattachable.cpp
diff options
context:
space:
mode:
authorTomasz Sterna <tomek@xiaoka.com>2014-07-14 17:19:45 +0200
committerTomasz Sterna <tomek@xiaoka.com>2014-07-16 00:07:28 +0200
commit3c19406ee292e0ed7993bd4d3976cc34d40e2f22 (patch)
tree67d185e95d647e56c074f4b3a30ac4f0d81e2ee6 /ext/Log4Qt/src/helpers/appenderattachable.cpp
parent630cc2e3097f2236a4c1191be6c955ec523d6f1a (diff)
Replaced ext/Log4Qt source with submodule
Diffstat (limited to 'ext/Log4Qt/src/helpers/appenderattachable.cpp')
-rw-r--r--ext/Log4Qt/src/helpers/appenderattachable.cpp199
1 files changed, 0 insertions, 199 deletions
diff --git a/ext/Log4Qt/src/helpers/appenderattachable.cpp b/ext/Log4Qt/src/helpers/appenderattachable.cpp
deleted file mode 100644
index 2fe0c1f..0000000
--- a/ext/Log4Qt/src/helpers/appenderattachable.cpp
+++ /dev/null
@@ -1,199 +0,0 @@
-/******************************************************************************
- *
- * package: Log4Qt
- * file: appenderattachable.cpp
- * created: Dezember 2010
- * author: Andreas Bacher
- *
- *
- * Copyright 2007 Andreas Bacher
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************/
-
-
-
-/******************************************************************************
- * Dependencies
- ******************************************************************************/
-
-
-#include "helpers/appenderattachable.h"
-#include "varia/listappender.h"
-#include "appender.h"
-
-#include <QtCore/QDebug>
-
-namespace Log4Qt
-{
-
-
-/**************************************************************************
- * Declarations
- **************************************************************************/
-
-
-
-/**************************************************************************
- * C helper functions
- **************************************************************************/
-
-
-
-/**************************************************************************
- * Class implementation: Filter
- **************************************************************************/
-AppenderAttachable::AppenderAttachable() :
-#if QT_VERSION < QT_VERSION_CHECK(4, 4, 0)
- mAppenderGuard()
-#else
- mAppenderGuard(QReadWriteLock::Recursive)
-#endif
-{
-}
-
-QList<Appender *> AppenderAttachable::appenders() const
-{
- QReadLocker locker(&mAppenderGuard);
-
- QList<Appender *> result;
- Appender *p_appender;
- Q_FOREACH(p_appender, mAppenders)
- result << p_appender;
-
- return result;
-}
-
-void AppenderAttachable::addAppender(Appender *pAppender)
-{
- // Avoid deadlock:
- // - Handle warnings, before write lock is aquired
-
- // Keep objects with a 0 reference count safe
- LogObjectPtr < Appender > p_appender = pAppender;
-
- {
- QReadLocker locker(&mAppenderGuard);
-
- if (!p_appender) {
- //logger()->warn("Adding null Appender to Logger '%1'", name());
- return;
- }
-
- if (mAppenders.contains(p_appender)) {
- //logger()->warn("Adding of duplicate appender '%2' to logger '%1'",
- //name(), p_appender->name());
- return;
- }
- }
- {
- QWriteLocker locker(&mAppenderGuard);
-
- if (mAppenders.contains(p_appender))
- return;
- mAppenders.append(p_appender);
- }
-}
-
-Appender *AppenderAttachable::appender(const QString &rName) const
-{
- QReadLocker locker(&mAppenderGuard);
-
- Appender *p_appender;
- Q_FOREACH(p_appender, mAppenders)
- if (p_appender->name() == rName)
- return p_appender;
- return 0;
-}
-
-bool AppenderAttachable::isAttached(Appender *pAppender) const
-{
- QReadLocker locker(&mAppenderGuard);
-
- // Keep objects with a 0 reference count safe
- LogObjectPtr < Appender > p_appender = pAppender;
-
- return mAppenders.contains(p_appender);
-}
-
-void AppenderAttachable::removeAllAppenders()
-{
-// Avoid deadlock:
-// - Only log warnings without having the write log aquired
-// - Hold a reference to all appenders so that the remove does not
-// destruct the appender over the reference count while the write
-// log is held. The appender may log messages.
-
- //logger()->trace("Removing all appenders from logger '%1'", name());
-
- QList < LogObjectPtr<Appender> > appenders;
- {
- QWriteLocker locker(&mAppenderGuard);
- QMutableListIterator < LogObjectPtr<Appender> > i(mAppenders);
- while (i.hasNext()) {
- Appender *p_appender = i.next();
- ListAppender *p_listappender = qobject_cast<ListAppender*> (p_appender);
- if (p_listappender && p_listappender->configuratorList())
- continue;
- else {
- appenders << p_appender;
- i.remove();
- }
- }
- }
- appenders.clear();
-}
-
- void AppenderAttachable::removeAppender(Appender *pAppender)
- {
- // Avoid deadlock:
- // - Only log warnings without having the write log aquired
- // - Hold a reference to the appender so that the remove does not
- // destruct the appender over the reference count while the write
- // log is held. The appender may log messages.
-
- LogObjectPtr < Appender > p_appender = pAppender;
-
- if (!p_appender) {
- //logger()->warn("Request to remove null Appender from Logger '%1'", name());
- return;
- }
- int n;
- {
- QWriteLocker locker(&mAppenderGuard);
-
- n = mAppenders.removeAll(p_appender);
- }
- if (n == 0) {
- //logger()->warn(
- // "Request to remove Appender '%2', which is not part of Logger '%1' appenders",
- // name(), p_appender->name());
- return;
- }
-}
-
-void AppenderAttachable::removeAppender(const QString &rName)
-{
- Appender *p_appender = appender(rName);
- if (p_appender)
- removeAppender(p_appender);
-}
-
-
-/**************************************************************************
- * Implementation: Operators, Helper
- **************************************************************************/
-
-
-} // namespace Log4Qt