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 | 7f1cc4b0a660cbe837e0261bd576eb4dd51dffd6 (patch) | |
tree | 1ba62254b64dc384d6b431500d4f7b405b9feb79 /cpp/src/qpid/sys/CopyOnWriteArray.h | |
parent | a8d83333c8050c18918e370d2f0bb9621b0038c7 (diff) | |
download | qpid-python-7f1cc4b0a660cbe837e0261bd576eb4dd51dffd6.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) { |