}
+
+class RGWPutObjEncryptFilter : public RGWPutObjDataProcessor
+{
+protected:
+ RGWPutObjDataProcessor& next;
+public:
+ RGWPutObjEncryptFilter(RGWPutObjDataProcessor& next) :
+ next(next){}
+ virtual ~RGWPutObjEncryptFilter(){}
+ virtual int handle_data(bufferlist& bl, off_t ofs, void **phandle, bool *again) {
+ return next.handle_data(bl, ofs, phandle, again);
+ }
+ virtual int throttle_data(void *handle, bool need_to_wait) {
+ return next.throttle_data(handle, need_to_wait);
+ }
+}; /* RGWPutObjEncryptFilter */
+
+
RGWPutObjProcessor *RGWPutObj::select_processor(RGWObjectCtx& obj_ctx, bool *is_multipart)
{
RGWPutObjProcessor *processor;