diff options
| author | Ted Ross <tross@apache.org> | 2010-02-01 16:10:33 +0000 |
|---|---|---|
| committer | Ted Ross <tross@apache.org> | 2010-02-01 16:10:33 +0000 |
| commit | 0ee9680ee6cfba76102f8a4cdb48423c8f5f499f (patch) | |
| tree | 1ba62254b64dc384d6b431500d4f7b405b9feb79 /cpp/src/qpid/sys/CopyOnWriteArray.h | |
| parent | 6ead718ad2f3ea4cc1a539cddab60c592e234693 (diff) | |
| download | qpid-python-0ee9680ee6cfba76102f8a4cdb48423c8f5f499f.tar.gz | |
QPID-2348 - [C++] The HeadersExchange does not support federation
Applied patch from Sam Joyce
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@905322 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/sys/CopyOnWriteArray.h')
| -rw-r--r-- | cpp/src/qpid/sys/CopyOnWriteArray.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/cpp/src/qpid/sys/CopyOnWriteArray.h b/cpp/src/qpid/sys/CopyOnWriteArray.h index e4ae3a6094..45a231dfd8 100644 --- a/cpp/src/qpid/sys/CopyOnWriteArray.h +++ b/cpp/src/qpid/sys/CopyOnWriteArray.h @@ -103,6 +103,24 @@ public: return false; } + template <class TestFn, class ModifierFn> + bool modify_if(TestFn f, ModifierFn & m) + { + if (!array) + return false; + { + Mutex::ScopedLock l(lock); + if (std::find_if(array->begin(), array->end(), f) != array->end()) + { + ArrayPtr copy(new std::vector<T>(*array)); + m(*std::find_if(copy->begin(), copy->end(), f)); + array = copy; + return true; + } + } + return false; + } + template <class F> F for_each(F f) { |
