aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/poco/Foundation/include/Poco/Observer.h
diff options
context:
space:
mode:
authororivej <orivej@yandex-team.ru>2022-02-10 16:45:01 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:45:01 +0300
commit2d37894b1b037cf24231090eda8589bbb44fb6fc (patch)
treebe835aa92c6248212e705f25388ebafcf84bc7a1 /contrib/libs/poco/Foundation/include/Poco/Observer.h
parent718c552901d703c502ccbefdfc3c9028d608b947 (diff)
downloadydb-2d37894b1b037cf24231090eda8589bbb44fb6fc.tar.gz
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/poco/Foundation/include/Poco/Observer.h')
-rw-r--r--contrib/libs/poco/Foundation/include/Poco/Observer.h248
1 files changed, 124 insertions, 124 deletions
diff --git a/contrib/libs/poco/Foundation/include/Poco/Observer.h b/contrib/libs/poco/Foundation/include/Poco/Observer.h
index 110c5bd918..98d94e0621 100644
--- a/contrib/libs/poco/Foundation/include/Poco/Observer.h
+++ b/contrib/libs/poco/Foundation/include/Poco/Observer.h
@@ -1,124 +1,124 @@
-//
-// Observer.h
-//
-// Library: Foundation
-// Package: Notifications
-// Module: NotificationCenter
-//
-// Definition of the Observer class template.
-//
-// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Foundation_Observer_INCLUDED
-#define Foundation_Observer_INCLUDED
-
-
-#include "Poco/Foundation.h"
-#include "Poco/AbstractObserver.h"
-#include "Poco/Mutex.h"
-
-
-namespace Poco {
-
-
-template <class C, class N>
-class Observer: public AbstractObserver
- /// This template class implements an adapter that sits between
- /// a NotificationCenter and an object receiving notifications
- /// from it. It is quite similar in concept to the
- /// RunnableAdapter, but provides some NotificationCenter
- /// specific additional methods.
- /// See the NotificationCenter class for information on how
- /// to use this template class.
- ///
- /// Instead of the Observer class template, you might want to
- /// use the NObserver class template, which uses an AutoPtr to
- /// pass the Notification to the callback function, thus freeing
- /// you from memory management issues.
-{
-public:
- typedef void (C::*Callback)(N*);
-
- Observer(C& object, Callback method):
- _pObject(&object),
- _method(method)
- {
- }
-
- Observer(const Observer& observer):
- AbstractObserver(observer),
- _pObject(observer._pObject),
- _method(observer._method)
- {
- }
-
- ~Observer()
- {
- }
-
- Observer& operator = (const Observer& observer)
- {
- if (&observer != this)
- {
- _pObject = observer._pObject;
- _method = observer._method;
- }
- return *this;
- }
-
- void notify(Notification* pNf) const
- {
- Poco::Mutex::ScopedLock lock(_mutex);
-
- if (_pObject)
- {
- N* pCastNf = dynamic_cast<N*>(pNf);
- if (pCastNf)
- {
- pCastNf->duplicate();
- (_pObject->*_method)(pCastNf);
- }
- }
- }
-
- bool equals(const AbstractObserver& abstractObserver) const
- {
- const Observer* pObs = dynamic_cast<const Observer*>(&abstractObserver);
- return pObs && pObs->_pObject == _pObject && pObs->_method == _method;
- }
-
- bool accepts(Notification* pNf) const
- {
- return dynamic_cast<N*>(pNf) != 0;
- }
-
- AbstractObserver* clone() const
- {
- return new Observer(*this);
- }
-
- void disable()
- {
- Poco::Mutex::ScopedLock lock(_mutex);
-
- _pObject = 0;
- }
-
-private:
- Observer();
-
- C* _pObject;
- Callback _method;
- mutable Poco::Mutex _mutex;
-};
-
-
-} // namespace Poco
-
-
-#endif // Foundation_Observer_INCLUDED
+//
+// Observer.h
+//
+// Library: Foundation
+// Package: Notifications
+// Module: NotificationCenter
+//
+// Definition of the Observer class template.
+//
+// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Foundation_Observer_INCLUDED
+#define Foundation_Observer_INCLUDED
+
+
+#include "Poco/Foundation.h"
+#include "Poco/AbstractObserver.h"
+#include "Poco/Mutex.h"
+
+
+namespace Poco {
+
+
+template <class C, class N>
+class Observer: public AbstractObserver
+ /// This template class implements an adapter that sits between
+ /// a NotificationCenter and an object receiving notifications
+ /// from it. It is quite similar in concept to the
+ /// RunnableAdapter, but provides some NotificationCenter
+ /// specific additional methods.
+ /// See the NotificationCenter class for information on how
+ /// to use this template class.
+ ///
+ /// Instead of the Observer class template, you might want to
+ /// use the NObserver class template, which uses an AutoPtr to
+ /// pass the Notification to the callback function, thus freeing
+ /// you from memory management issues.
+{
+public:
+ typedef void (C::*Callback)(N*);
+
+ Observer(C& object, Callback method):
+ _pObject(&object),
+ _method(method)
+ {
+ }
+
+ Observer(const Observer& observer):
+ AbstractObserver(observer),
+ _pObject(observer._pObject),
+ _method(observer._method)
+ {
+ }
+
+ ~Observer()
+ {
+ }
+
+ Observer& operator = (const Observer& observer)
+ {
+ if (&observer != this)
+ {
+ _pObject = observer._pObject;
+ _method = observer._method;
+ }
+ return *this;
+ }
+
+ void notify(Notification* pNf) const
+ {
+ Poco::Mutex::ScopedLock lock(_mutex);
+
+ if (_pObject)
+ {
+ N* pCastNf = dynamic_cast<N*>(pNf);
+ if (pCastNf)
+ {
+ pCastNf->duplicate();
+ (_pObject->*_method)(pCastNf);
+ }
+ }
+ }
+
+ bool equals(const AbstractObserver& abstractObserver) const
+ {
+ const Observer* pObs = dynamic_cast<const Observer*>(&abstractObserver);
+ return pObs && pObs->_pObject == _pObject && pObs->_method == _method;
+ }
+
+ bool accepts(Notification* pNf) const
+ {
+ return dynamic_cast<N*>(pNf) != 0;
+ }
+
+ AbstractObserver* clone() const
+ {
+ return new Observer(*this);
+ }
+
+ void disable()
+ {
+ Poco::Mutex::ScopedLock lock(_mutex);
+
+ _pObject = 0;
+ }
+
+private:
+ Observer();
+
+ C* _pObject;
+ Callback _method;
+ mutable Poco::Mutex _mutex;
+};
+
+
+} // namespace Poco
+
+
+#endif // Foundation_Observer_INCLUDED