diff options
| author | Gordon Sim <gsim@apache.org> | 2007-10-18 12:53:46 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2007-10-18 12:53:46 +0000 |
| commit | e77ead1fcc4ab32323a1a1212e42498ed6c4b60e (patch) | |
| tree | 417fbf542630124e09e8587ff925e612eacd48a1 /cpp/src/qpid | |
| parent | 5fab67a9881d5113a1b1bb0cd66235b430885618 (diff) | |
| download | qpid-python-e77ead1fcc4ab32323a1a1212e42498ed6c4b60e.tar.gz | |
Fixed return of acquired message ranges (and added tests)
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@585952 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid')
| -rw-r--r-- | cpp/src/qpid/broker/MessageHandlerImpl.cpp | 2 | ||||
| -rw-r--r-- | cpp/src/qpid/framing/SequenceNumberSet.cpp | 16 |
2 files changed, 12 insertions, 6 deletions
diff --git a/cpp/src/qpid/broker/MessageHandlerImpl.cpp b/cpp/src/qpid/broker/MessageHandlerImpl.cpp index 87b23102e2..b12910893a 100644 --- a/cpp/src/qpid/broker/MessageHandlerImpl.cpp +++ b/cpp/src/qpid/broker/MessageHandlerImpl.cpp @@ -198,7 +198,7 @@ void MessageHandlerImpl::acquire(const SequenceNumberSet& transfers, u_int8_t /* //TODO: implement mode SequenceNumberSet results; - RangedOperation op = boost::bind(&SemanticState::acquire, &state, _1, _2, results); + RangedOperation op = boost::bind(&SemanticState::acquire, &state, _1, _2, boost::ref(results)); transfers.processRanges(op); results = results.condense(); getProxy().getMessage().acquired(results); diff --git a/cpp/src/qpid/framing/SequenceNumberSet.cpp b/cpp/src/qpid/framing/SequenceNumberSet.cpp index b769befeb7..afab9033e5 100644 --- a/cpp/src/qpid/framing/SequenceNumberSet.cpp +++ b/cpp/src/qpid/framing/SequenceNumberSet.cpp @@ -48,14 +48,20 @@ SequenceNumberSet SequenceNumberSet::condense() const { SequenceNumberSet result; const_iterator last = end(); + const_iterator start = end(); for (const_iterator i = begin(); i != end(); i++) { - if (last == end()) { - last = i; + if (start == end()) { + start = i; } else if (*i - *last > 1) { - result.push_back(*last); - result.push_back(*i); - last = end(); + result.push_back(*start); + result.push_back(*last); + start = i; } + last = i; + } + if (start != end()) { + result.push_back(*start); + result.push_back(*last); } return result; } |
