From: Radoslaw Zarzynski Date: Wed, 23 Nov 2016 15:39:06 +0000 (+0100) Subject: rgw: implement RGWBulkUploadOp::DecoratedStreamGetter. X-Git-Tag: v12.0.2~214^2~9 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0edc4e55b22c0ca50bc600ac6c8f7f88e807eefe;p=ceph.git rgw: implement RGWBulkUploadOp::DecoratedStreamGetter. Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/rgw/rgw_op.h b/src/rgw/rgw_op.h index be723f37b9ff..af44302f2d9f 100644 --- a/src/rgw/rgw_op.h +++ b/src/rgw/rgw_op.h @@ -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 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 {