X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Frgw%2Frgw_gc.h;fp=src%2Fceph%2Fsrc%2Frgw%2Frgw_gc.h;h=491796b50e86d6dc1d876a3c173873f3274854dd;hb=812ff6ca9fcd3e629e49d4328905f33eee8ca3f5;hp=0000000000000000000000000000000000000000;hpb=15280273faafb77777eab341909a3f495cf248d9;p=stor4nfv.git diff --git a/src/ceph/src/rgw/rgw_gc.h b/src/ceph/src/rgw/rgw_gc.h new file mode 100644 index 0000000..491796b --- /dev/null +++ b/src/ceph/src/rgw/rgw_gc.h @@ -0,0 +1,67 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab + +#ifndef CEPH_RGW_GC_H +#define CEPH_RGW_GC_H + + +#include "include/types.h" +#include "include/rados/librados.hpp" +#include "common/Mutex.h" +#include "common/Cond.h" +#include "common/Thread.h" +#include "rgw_common.h" +#include "rgw_rados.h" +#include "cls/rgw/cls_rgw_types.h" + +#include + +class RGWGC { + CephContext *cct; + RGWRados *store; + int max_objs; + string *obj_names; + std::atomic down_flag = { false }; + + int tag_index(const string& tag); + + class GCWorker : public Thread { + CephContext *cct; + RGWGC *gc; + Mutex lock; + Cond cond; + + public: + GCWorker(CephContext *_cct, RGWGC *_gc) : cct(_cct), gc(_gc), lock("GCWorker") {} + void *entry() override; + void stop(); + }; + + GCWorker *worker; +public: + RGWGC() : cct(NULL), store(NULL), max_objs(0), obj_names(NULL), worker(NULL) {} + ~RGWGC() { + stop_processor(); + finalize(); + } + + void add_chain(librados::ObjectWriteOperation& op, cls_rgw_obj_chain& chain, const string& tag); + int send_chain(cls_rgw_obj_chain& chain, const string& tag, bool sync); + int defer_chain(const string& tag, bool sync); + int remove(int index, const std::list& tags); + + void initialize(CephContext *_cct, RGWRados *_store); + void finalize(); + + int list(int *index, string& marker, uint32_t max, bool expired_only, std::list& result, bool *truncated); + void list_init(int *index) { *index = 0; } + int process(int index, int process_max_secs); + int process(); + + bool going_down(); + void start_processor(); + void stop_processor(); +}; + + +#endif