diff options
| author | Gordon Sim <gsim@apache.org> | 2007-10-04 16:06:05 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2007-10-04 16:06:05 +0000 |
| commit | 03f1df9ff7894a6d910120c82bba49e6193178ee (patch) | |
| tree | e27792701ea80e1aa83d1c5730da71502374d25d /cpp/src/qpid/framing | |
| parent | c848c1a4e6be50176f10170c6422c5e4d5385770 (diff) | |
| download | qpid-python-03f1df9ff7894a6d910120c82bba49e6193178ee.tar.gz | |
Additional tests and fixes
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@581957 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/framing')
| -rw-r--r-- | cpp/src/qpid/framing/AccumulatedAck.cpp | 7 | ||||
| -rw-r--r-- | cpp/src/qpid/framing/AccumulatedAck.h | 3 | ||||
| -rw-r--r-- | cpp/src/qpid/framing/SequenceNumberSet.cpp | 6 | ||||
| -rw-r--r-- | cpp/src/qpid/framing/SequenceNumberSet.h | 7 |
4 files changed, 16 insertions, 7 deletions
diff --git a/cpp/src/qpid/framing/AccumulatedAck.cpp b/cpp/src/qpid/framing/AccumulatedAck.cpp index 219a68b96c..bf53bf0cd6 100644 --- a/cpp/src/qpid/framing/AccumulatedAck.cpp +++ b/cpp/src/qpid/framing/AccumulatedAck.cpp @@ -22,12 +22,15 @@ #include <assert.h> #include <iostream> +#include <boost/bind.hpp> using std::list; using std::max; using std::min; using namespace qpid::framing; +AccumulatedAck::AccumulatedAck(SequenceNumber r) : mark(r) {} + void AccumulatedAck::update(SequenceNumber first, SequenceNumber last){ assert(first <= last); if (last < mark) return; @@ -103,9 +106,7 @@ void AccumulatedAck::collectRanges(SequenceNumberSet& set) const void AccumulatedAck::update(const SequenceNumber cumulative, const SequenceNumberSet& range) { update(mark, cumulative); - for (SequenceNumberSet::const_iterator i = range.begin(); i != range.end(); i++) { - update(*i, *(++i)); - } + range.processRanges(*this); } diff --git a/cpp/src/qpid/framing/AccumulatedAck.h b/cpp/src/qpid/framing/AccumulatedAck.h index 1f66197e2a..a635d2ea04 100644 --- a/cpp/src/qpid/framing/AccumulatedAck.h +++ b/cpp/src/qpid/framing/AccumulatedAck.h @@ -58,13 +58,14 @@ namespace qpid { */ std::list<Range> ranges; - explicit AccumulatedAck(SequenceNumber r = SequenceNumber()) : mark(r) {} + explicit AccumulatedAck(SequenceNumber r = SequenceNumber()); void update(SequenceNumber firstTag, SequenceNumber lastTag); void consolidate(); void clear(); bool covers(SequenceNumber tag) const; void collectRanges(SequenceNumberSet& set) const; void update(const SequenceNumber cumulative, const SequenceNumberSet& range); + void operator()(SequenceNumber first, SequenceNumber last) { update(first, last); } }; std::ostream& operator<<(std::ostream&, const Range&); std::ostream& operator<<(std::ostream&, const AccumulatedAck&); diff --git a/cpp/src/qpid/framing/SequenceNumberSet.cpp b/cpp/src/qpid/framing/SequenceNumberSet.cpp index f1c81e078b..b769befeb7 100644 --- a/cpp/src/qpid/framing/SequenceNumberSet.cpp +++ b/cpp/src/qpid/framing/SequenceNumberSet.cpp @@ -60,6 +60,12 @@ SequenceNumberSet SequenceNumberSet::condense() const return result; } +void SequenceNumberSet::addRange(const SequenceNumber& start, const SequenceNumber& end) +{ + push_back(start); + push_back(end); +} + namespace qpid{ namespace framing{ diff --git a/cpp/src/qpid/framing/SequenceNumberSet.h b/cpp/src/qpid/framing/SequenceNumberSet.h index f9d0cc1fd4..9091e7142e 100644 --- a/cpp/src/qpid/framing/SequenceNumberSet.h +++ b/cpp/src/qpid/framing/SequenceNumberSet.h @@ -41,17 +41,18 @@ public: void decode(Buffer& buffer); uint32_t encodedSize() const; SequenceNumberSet condense() const; + void addRange(const SequenceNumber& start, const SequenceNumber& end); template <class T> - void processRanges(T t) const + void processRanges(T& t) const { if (size() % 2) { //must be even number throw InvalidArgumentException("SequenceNumberSet contains odd number of elements"); } for (SequenceNumberSet::const_iterator i = begin(); i != end(); i++) { - SequenceNumber first = i->getValue(); - SequenceNumber last = (++i)->getValue(); + SequenceNumber first = *(i); + SequenceNumber last = *(++i); t(first, last); } } |
