]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: implement RGWBulkUploadOp::DecoratedStreamGetter.
authorRadoslaw Zarzynski <rzarzynski@mirantis.com>
Wed, 23 Nov 2016 15:39:06 +0000 (16:39 +0100)
committerRadoslaw Zarzynski <rzarzynski@mirantis.com>
Sat, 1 Apr 2017 13:46:25 +0000 (15:46 +0200)
Signed-off-by: Radoslaw Zarzynski <rzarzynski@mirantis.com>
src/rgw/rgw_op.h

index be723f37b9ff22cd82026d286c7866f251af25e9..af44302f2d9f84d341c32c0b0527a2145363d074 100644 (file)
@@ -389,6 +389,7 @@ inline ostream& operator<<(ostream& out, const RGWBulkDelete::acct_path_t &o) {
 class RGWBulkUploadOp : public RGWOp {
 protected:
   class StreamGetter;
+  class DecoratedStreamGetter;
 
   virtual std::unique_ptr<StreamGetter> create_stream() = 0;
   virtual void send_response() = 0;
@@ -422,6 +423,30 @@ public:
 }; /* End of nested subclass StreamGetter */
 
 
+class RGWBulkUploadOp::DecoratedStreamGetter : public StreamGetter {
+  StreamGetter& decoratee;
+
+protected:
+  StreamGetter& get_decoratee() {
+    return decoratee;
+  }
+
+public:
+  DecoratedStreamGetter(StreamGetter& decoratee)
+    : decoratee(decoratee) {
+  }
+  virtual ~DecoratedStreamGetter() = default;
+
+  ssize_t get_at_most(const size_t want, ceph::bufferlist& dst) override {
+    return get_decoratee().get_at_most(want, dst);
+  }
+
+  ssize_t get_exactly(const size_t want, ceph::bufferlist& dst) override {
+    return get_decoratee().get_exactly(want, dst);
+  }
+}; /* RGWBulkUploadOp::DecoratedStreamGetter */
+
+
 #define RGW_LIST_BUCKETS_LIMIT_MAX 10000
 
 class RGWListBuckets : public RGWOp {