io_ctx(ioc), objs_container(_objs_container), max_aio(_max_aio)
{}
- virtual ~CLSRGWConcurrentIO()
- {}
+ virtual ~CLSRGWConcurrentIO() {}
int operator()();
}; // class CLSRGWConcurrentIO
std::map<int, std::string>& _bucket_objs,
uint32_t _max_aio) :
CLSRGWConcurrentIO(ioc, _bucket_objs, _max_aio) {}
+ virtual ~CLSRGWIssueBucketIndexInit() override {}
};
uint32_t _max_aio) :
CLSRGWConcurrentIO(ioc, _bucket_objs, _max_aio)
{}
+ virtual ~CLSRGWIssueBucketIndexClean() override {}
};
CLSRGWIssueSetTagTimeout(librados::IoCtx& ioc, std::map<int, std::string>& _bucket_objs,
uint32_t _max_aio, uint64_t _tag_timeout) :
CLSRGWConcurrentIO(ioc, _bucket_objs, _max_aio), tag_timeout(_tag_timeout) {}
+ virtual ~CLSRGWIssueSetTagTimeout() override {}
};
void cls_rgw_bucket_update_stats(librados::ObjectWriteOperation& o,
std::map<int, cls_rgw_bi_log_list_ret>& bi_log_lists, uint32_t max_aio) :
CLSRGWConcurrentIO(io_ctx, oids, max_aio), result(bi_log_lists),
marker_mgr(_marker_mgr), max(_max) {}
+ virtual ~CLSRGWIssueBILogList() override {}
};
void cls_rgw_bilog_trim(librados::ObjectWriteOperation& op,
BucketIndexShardsManager& _end_marker_mgr, std::map<int, std::string>& _bucket_objs, uint32_t max_aio) :
CLSRGWConcurrentIO(io_ctx, _bucket_objs, max_aio),
start_marker_mgr(_start_marker_mgr), end_marker_mgr(_end_marker_mgr) {}
+ virtual ~CLSRGWIssueBILogTrim() override {}
};
/**
std::map<int, rgw_cls_check_index_ret>& bucket_objs_ret,
uint32_t _max_aio) :
CLSRGWConcurrentIO(ioc, oids, _max_aio), result(bucket_objs_ret) {}
+ virtual ~CLSRGWIssueBucketCheck() override {}
};
class CLSRGWIssueBucketRebuild : public CLSRGWConcurrentIO {
public:
CLSRGWIssueBucketRebuild(librados::IoCtx& io_ctx, std::map<int, std::string>& bucket_objs,
uint32_t max_aio) : CLSRGWConcurrentIO(io_ctx, bucket_objs, max_aio) {}
+ virtual ~CLSRGWIssueBucketRebuild() override {}
};
class CLSRGWIssueGetDirHeader : public CLSRGWConcurrentIO {
CLSRGWIssueGetDirHeader(librados::IoCtx& io_ctx, std::map<int, std::string>& oids, std::map<int, rgw_cls_list_ret>& dir_headers,
uint32_t max_aio) :
CLSRGWConcurrentIO(io_ctx, oids, max_aio), result(dir_headers) {}
+ virtual ~CLSRGWIssueGetDirHeader() override {}
};
class CLSRGWIssueSetBucketResharding : public CLSRGWConcurrentIO {
CLSRGWIssueSetBucketResharding(librados::IoCtx& ioc, std::map<int, std::string>& _bucket_objs,
const cls_rgw_bucket_instance_entry& _entry,
uint32_t _max_aio) : CLSRGWConcurrentIO(ioc, _bucket_objs, _max_aio), entry(_entry) {}
+ virtual ~CLSRGWIssueSetBucketResharding() override {}
};
class CLSRGWIssueResyncBucketBILog : public CLSRGWConcurrentIO {
public:
CLSRGWIssueResyncBucketBILog(librados::IoCtx& io_ctx, std::map<int, std::string>& _bucket_objs, uint32_t max_aio) :
CLSRGWConcurrentIO(io_ctx, _bucket_objs, max_aio) {}
+ virtual ~CLSRGWIssueResyncBucketBILog() override {}
};
class CLSRGWIssueBucketBILogStop : public CLSRGWConcurrentIO {
public:
CLSRGWIssueBucketBILogStop(librados::IoCtx& io_ctx, std::map<int, std::string>& _bucket_objs, uint32_t max_aio) :
CLSRGWConcurrentIO(io_ctx, _bucket_objs, max_aio) {}
+ virtual ~CLSRGWIssueBucketBILogStop() override {}
};
int cls_rgw_get_dir_header_async(librados::IoCtx& io_ctx, std::string& oid, RGWGetDirHeader_CB *ctx);
{
public:
ACLPermission_S3() {}
- ~ACLPermission_S3() override {}
+ virtual ~ACLPermission_S3() override {}
bool xml_end(const char *el) override;
void to_xml(std::ostream& out);
{
public:
ACLGrantee_S3() {}
- ~ACLGrantee_S3() override {}
+ virtual ~ACLGrantee_S3() override {}
bool xml_start(const char *el, const char **attr);
};
{
public:
ACLGrant_S3() {}
- ~ACLGrant_S3() override {}
+ virtual ~ACLGrant_S3() override {}
void to_xml(CephContext *cct, std::ostream& out);
bool xml_end(const char *el) override;
{
public:
explicit RGWAccessControlList_S3(CephContext *_cct) : RGWAccessControlList(_cct) {}
- ~RGWAccessControlList_S3() override {}
+ virtual ~RGWAccessControlList_S3() override {}
bool xml_end(const char *el) override;
void to_xml(std::ostream& out);
{
public:
ACLOwner_S3() {}
- ~ACLOwner_S3() override {}
+ virtual ~ACLOwner_S3() override {}
bool xml_end(const char *el) override;
void to_xml(std::ostream& out);
{
public:
explicit RGWAccessControlPolicy_S3(CephContext *_cct) : RGWAccessControlPolicy(_cct) {}
- ~RGWAccessControlPolicy_S3() override {}
+ virtual ~RGWAccessControlPolicy_S3() override {}
bool xml_end(const char *el) override;
public:
Throttle(uint64_t window) : window(window) {}
- ~Throttle() {
+ virtual ~Throttle() {
// must drain before destructing
ceph_assert(pending.empty());
ceph_assert(completed.empty());
public:
BlockingAioThrottle(uint64_t window) : Throttle(window) {}
+ virtual ~BlockingAioThrottle() override {};
+
AioResultList get(const RGWSI_RADOS::Obj& obj, OpFunc&& f,
uint64_t cost, uint64_t id) override final;
: Throttle(window), context(context), yield(yield)
{}
+ virtual ~YieldingAioThrottle() override {};
+
AioResultList get(const RGWSI_RADOS::Obj& obj, OpFunc&& f,
uint64_t cost, uint64_t id) override final;
RGWCompressionInfo* cs_info_,
bool partial_content_,
RGWGetObj_Filter* next);
- ~RGWGetObj_Decompress() override {}
+ virtual ~RGWGetObj_Decompress() override {}
int handle_data(bufferlist& bl, off_t bl_ofs, off_t bl_len) override;
int fixup_range(off_t& ofs, off_t& end) override;
RGWPutObj_Compress(CephContext* cct_, CompressorRef compressor,
rgw::sal::DataProcessor *next)
: Pipe(next), cct(cct_), compressor(compressor) {}
+ virtual ~RGWPutObj_Compress() override {};
int process(bufferlist&& data, uint64_t logical_offset) override;
void _complete(RGWAioCompletionNotifier *cn, const rgw_io_id& io_id, void *user_info);
public:
explicit RGWCompletionManager(CephContext *_cct);
- ~RGWCompletionManager() override;
+ virtual ~RGWCompletionManager() override;
void complete(RGWAioCompletionNotifier *cn, const rgw_io_id& io_id, void *user_info);
int get_next(io_completion *io);
public:
RGWAioCompletionNotifier(RGWCompletionManager *_mgr, const rgw_io_id& _io_id, void *_user_data);
- ~RGWAioCompletionNotifier() override {
+ virtual ~RGWAioCompletionNotifier() override {
c->release();
lock.lock();
bool need_unregister = registered;
bool collect_next(RGWCoroutine *op, int *ret, RGWCoroutinesStack **collected_stack); /* returns true if found a stack to collect */
public:
RGWCoroutinesStack(CephContext *_cct, RGWCoroutinesManager *_ops_mgr, RGWCoroutine *start = NULL);
- ~RGWCoroutinesStack() override;
+ virtual ~RGWCoroutinesStack() override;
int64_t get_id() const {
return id;
public:
RGWSimpleCoroutine(CephContext *_cct) : RGWCoroutine(_cct), called_cleanup(false) {}
- ~RGWSimpleCoroutine() override;
+ virtual ~RGWSimpleCoroutine() override;
virtual int init() { return 0; }
virtual int send_request(const DoutPrefixProvider *dpp) = 0;
public:
LCRule(){};
- ~LCRule(){};
+ virtual ~LCRule() {}
const std::string& get_id() const {
return id;
bool should_work(utime_t& now);
int schedule_next_start_time(utime_t& start, utime_t& now);
std::set<std::string>& get_cloud_targets() { return cloud_targets; }
- ~LCWorker();
+ virtual ~LCWorker() override;
friend class RGWRados;
friend class RGWLC;
std::vector<std::unique_ptr<RGWLC::LCWorker>> workers;
RGWLC() : cct(nullptr), store(nullptr) {}
- ~RGWLC();
+ virtual ~RGWLC() override;
void initialize(CephContext *_cct, rgw::sal::Store* _store);
void finalize();
public:
explicit Pipe(rgw::sal::DataProcessor *next) : next(next) {}
+ virtual ~Pipe() override {}
+
// passes the data on to the next processor
int process(bufferlist&& data, uint64_t offset) override {
return next->process(std::move(data), offset);
ChunkProcessor(rgw::sal::DataProcessor *next, uint64_t chunk_size)
: Pipe(next), chunk_size(chunk_size)
{}
+ virtual ~ChunkProcessor() override {}
int process(bufferlist&& data, uint64_t offset) override;
};
uint64_t first_stripe_size)
: Pipe(next), gen(gen), bounds(0, first_stripe_size)
{}
+ virtual ~StripeProcessor() override {}
int process(bufferlist&& data, uint64_t data_offset) override;
};
typedef std::map<std::string, XMLObj *>::iterator const_map_iter_t;
XMLObjIter();
- ~XMLObjIter();
+ virtual ~XMLObjIter();
void set(const XMLObjIter::const_map_iter_t &_cur, const XMLObjIter::const_map_iter_t &_end);
XMLObj *get_next();
bool get_name(std::string& name) const;
public:
RGWXMLParser();
- ~RGWXMLParser() override;
+ virtual ~RGWXMLParser() override;
// initialize the parser, must be called before parsing
bool init();