7 #ifndef swcdb_ranger_db_RangeSplit_h
8 #define swcdb_ranger_db_RangeSplit_h
14 namespace SWC {
namespace Ranger {
24 noexcept : new_range(a_new_range), res(a_res) {
27 cid_t get_cid()
const noexcept {
28 return new_range->cfg->cid;
35 bool valid() noexcept {
46 new_range->cfg->cid, new_range->rid);
48 if(rsp.
err && valid() &&
60 new_range->cfg->cid, new_range->rid),
99 if(!col || col->removing())
106 auto new_range = col->internal_create(err, new_rid,
true);
108 new_range->internal_create_folders(err);
117 col->internal_remove(tmperr, new_rid);
125 mv_css.
assign(it,
range->blocks.cellstores.cend());
127 new_range->internal_create(err, mv_css);
129 for(; it !=
range->blocks.cellstores.cend(); ) {
131 range->blocks.cellstores.erase(it);
136 col->internal_remove(tmperr, new_rid);
141 if(
range->blocks.commitlog.cells_count()) {
143 range->blocks.commitlog.get(fragments_old);
146 range->blocks.cellstores.back()->interval.key_end,
148 &
range->blocks.commitlog,
149 &new_range->blocks.commitlog
153 range->blocks.commitlog.remove(err, fragments_old);
155 range->blocks.commitlog.commit_finalize();
156 new_range->blocks.commitlog.commit_finalize();
162 [
this, col, await=&res]
166 " unloading new-rid=" SWC_FMT_LU " reg-err=%d(%s)",
167 col->cfg->cid,
range->rid, hdlr->range->rid,
170 col->internal_unload(hdlr->range->rid);
176 ReqData(
cid_t a_cid,
rid_t a_new_rid) noexcept
177 : cid(a_cid), new_rid(a_new_rid) {
180 cid_t get_cid()
const noexcept {
188 bool valid() noexcept {
196 "RangeSplit::Mngr::Req::RangeUnloaded err=%d(%s) "
199 if(rsp.
err && valid() &&
204 req->request_again();
210 col->cfg->cid, hdlr->range->rid),
212 col->cfg->
cid, hdlr->range->rid
218 await->acknowledge();
244 ReqData(
cid_t a_cid,
int& a_err,
rid_t& a_new_rid,
246 : cid(a_cid), err(a_err), new_rid(a_new_rid), res(a_res) {
249 cid_t get_cid()
const noexcept {
257 bool valid() noexcept {
265 "RangeSplit::Mngr::Req::RangeCreate err=%d(%s) "
269 if(rsp.
err && valid() &&
274 req->request_again();
286 range->cfg->cid, err, new_rid, res
298 #endif // swcdb_ranger_db_RangeSplit_h