bool read_required = false;
librados::ObjectReadOperation op;
for (auto &sync_op : sync_ops) {
- switch (std::get<0>(sync_op)) {
+ switch (sync_op.type) {
case SYNC_OP_TYPE_WRITE:
if (!read_required) {
dout(20) << ": remote_snap_seq=" << remote_snap_seq << dendl;
read_required = true;
}
- dout(20) << ": read op: " << std::get<1>(sync_op) << "~"
- << std::get<2>(sync_op) << dendl;
- op.read(std::get<1>(sync_op), std::get<2>(sync_op),
- &std::get<3>(sync_op), nullptr);
+ dout(20) << ": read op: " << sync_op.offset << "~" << sync_op.length
+ << dendl;
+ op.read(sync_op.offset, sync_op.length, &sync_op.out_bl, nullptr);
break;
default:
break;
librados::ObjectWriteOperation op;
for (auto &sync_op : sync_ops) {
- switch (std::get<0>(sync_op)) {
+ switch (sync_op.type) {
case SYNC_OP_TYPE_WRITE:
- dout(20) << ": write op: " << std::get<1>(sync_op) << "~"
- << std::get<3>(sync_op).length() << dendl;
- op.write(std::get<1>(sync_op), std::get<3>(sync_op));
+ dout(20) << ": write op: " << sync_op.offset << "~"
+ << sync_op.out_bl.length() << dendl;
+ op.write(sync_op.offset, sync_op.out_bl);
break;
case SYNC_OP_TYPE_TRUNC:
- dout(20) << ": trunc op: " << std::get<1>(sync_op) << dendl;
- op.truncate(std::get<1>(sync_op));
+ dout(20) << ": trunc op: " << sync_op.offset << dendl;
+ op.truncate(sync_op.offset);
break;
case SYNC_OP_TYPE_REMOVE:
dout(20) << ": remove op" << dendl;
<< it.get_len() << dendl;
m_snap_sync_ops[end_remote_snap_id].emplace_back(SYNC_OP_TYPE_WRITE,
it.get_start(),
- it.get_len(),
- bufferlist());
+ it.get_len());
}
if (end_size < prev_end_size) {
dout(20) << ": trunc op: " << end_size << dendl;
m_snap_sync_ops[end_remote_snap_id].emplace_back(SYNC_OP_TYPE_TRUNC,
- end_size, 0U,
- bufferlist());
+ end_size, 0U);
}
} else {
if (prev_exists) {
// object remove
dout(20) << ": remove op" << dendl;
m_snap_sync_ops[end_remote_snap_id].emplace_back(SYNC_OP_TYPE_REMOVE,
- 0U, 0U, bufferlist());
+ 0U, 0U);
}
}
#include <list>
#include <map>
#include <string>
-#include <tuple>
#include <vector>
class Context;
SYNC_OP_TYPE_REMOVE
};
- typedef std::tuple<SyncOpType, uint64_t, uint64_t, bufferlist> SyncOp;
+ struct SyncOp {
+ SyncOp(SyncOpType type, uint64_t offset, uint64_t length)
+ : type(type), offset(offset), length(length) {
+ }
+
+ SyncOpType type;
+ uint64_t offset;
+ uint64_t length;
+
+ bufferlist out_bl;
+ };
+
typedef std::list<SyncOp> SyncOps;
typedef std::map<librados::snap_t, SyncOps> SnapSyncOps;
typedef std::map<librados::snap_t, uint8_t> SnapObjectStates;