summaryrefslogtreecommitdiff
path: root/src/osdc/Objecter.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/osdc/Objecter.h')
-rw-r--r--src/osdc/Objecter.h32
1 files changed, 10 insertions, 22 deletions
diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h
index 1196633276d..b48c6bfcc14 100644
--- a/src/osdc/Objecter.h
+++ b/src/osdc/Objecter.h
@@ -591,31 +591,19 @@ struct ObjectOperation {
return;
try {
bufferlist::iterator p = bl.begin();
- uint64_t size;
- ::decode(size, p);
+ object_copy_data_t copy_reply;
+ ::decode(copy_reply, p);
if (out_size)
- *out_size = size;
- utime_t mtime;
- ::decode(mtime, p);
+ *out_size = copy_reply.size;
if (out_mtime)
- *out_mtime = mtime;
- if (out_attrs) {
- ::decode_noclear(*out_attrs, p);
- } else {
- std::map<std::string,bufferlist> t;
- ::decode(t, p);
- }
- bufferlist bl;
- ::decode(bl, p);
+ *out_mtime = copy_reply.mtime;
+ if (out_attrs)
+ *out_attrs = copy_reply.attrs;
if (out_data)
- out_data->claim_append(bl);
- if (out_omap) {
- ::decode_noclear(*out_omap, p);
- } else {
- std::map<std::string,bufferlist> t;
- ::decode(t, p);
- }
- ::decode(*cursor, p);
+ out_data->claim_append(copy_reply.data);
+ if (out_omap)
+ *out_omap = copy_reply.omap;
+ *cursor = copy_reply.cursor;
} catch (buffer::error& e) {
r = -EIO;
}