From 7f1cc4b0a660cbe837e0261bd576eb4dd51dffd6 Mon Sep 17 00:00:00 2001 From: Ted Ross Date: Mon, 1 Feb 2010 16:10:33 +0000 Subject: 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 --- cpp/src/qpid/sys/CopyOnWriteArray.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'cpp/src/qpid/sys/CopyOnWriteArray.h') 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 + 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(*array)); + m(*std::find_if(copy->begin(), copy->end(), f)); + array = copy; + return true; + } + } + return false; + } + template F for_each(F f) { -- cgit v1.2.1