summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/TxAccept.h
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2008-10-24 12:34:29 +0000
committerGordon Sim <gsim@apache.org>2008-10-24 12:34:29 +0000
commit2effbc58544688cfeabc4d7d6dcbd59805233de0 (patch)
tree8a3dd46362058dc64dd897e2aa32428b18b748e1 /cpp/src/qpid/broker/TxAccept.h
parent93b372e4d8d51a3db161a95a8b1884ce6af117fd (diff)
downloadqpid-python-2effbc58544688cfeabc4d7d6dcbd59805233de0.tar.gz
Revised transactional options to perftest as they could not be used on older boost versions due to ambiguity.
Refactored TxAccept to avoid excessive testing and searching for delivery records. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@707615 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/TxAccept.h')
-rw-r--r--cpp/src/qpid/broker/TxAccept.h24
1 files changed, 23 insertions, 1 deletions
diff --git a/cpp/src/qpid/broker/TxAccept.h b/cpp/src/qpid/broker/TxAccept.h
index 9548c50c2a..5474327f7c 100644
--- a/cpp/src/qpid/broker/TxAccept.h
+++ b/cpp/src/qpid/broker/TxAccept.h
@@ -34,9 +34,31 @@ namespace qpid {
* Defines the transactional behaviour for accepts received by
* a transactional channel.
*/
- class TxAccept : public TxOp{
+ class TxAccept : public TxOp {
+ struct RangeOp
+ {
+ AckRange range;
+
+ RangeOp(const AckRange& r);
+ void prepare(TransactionContext* ctxt);
+ void commit();
+ };
+
+ struct RangeOps
+ {
+ std::vector<RangeOp> ranges;
+ DeliveryRecords& unacked;
+
+ RangeOps(DeliveryRecords& u);
+
+ void operator()(framing::SequenceNumber start, framing::SequenceNumber end);
+ void prepare(TransactionContext* ctxt);
+ void commit();
+ };
+
framing::SequenceSet& acked;
std::list<DeliveryRecord>& unacked;
+ RangeOps ops;
public:
/**