]> git.proxmox.com Git - ceph.git/blame - ceph/src/cls/timeindex/cls_timeindex_client.h
update sources to v12.1.0
[ceph.git] / ceph / src / cls / timeindex / cls_timeindex_client.h
CommitLineData
7c673cae
FG
1// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2// vim: ts=8 sw=2 smarttab
3
4#ifndef CEPH_CLS_TIMEINDEX_CLIENT_H
5#define CEPH_CLS_TIMEINDEX_CLIENT_H
6
7c673cae 7#include "include/rados/librados.hpp"
31f18b77
FG
8
9#include "cls_timeindex_ops.h"
10
11namespace librados {
12 class ObjectWriteOperation;
13 class ObjectReadOperation;
14 class IoCtx;
15}
7c673cae
FG
16
17/**
18 * timeindex objclass
19 */
20class TimeindexListCtx : public librados::ObjectOperationCompletion {
21 std::list<cls_timeindex_entry> *entries;
22 std::string *marker;
23 bool *truncated;
24
25public:
26 ///* ctor
27 TimeindexListCtx(
28 std::list<cls_timeindex_entry> *_entries,
29 std::string *_marker,
30 bool *_truncated)
31 : entries(_entries), marker(_marker), truncated(_truncated) {}
32
33 ///* dtor
34 ~TimeindexListCtx() {}
35
36 void handle_completion(int r, bufferlist& bl) override {
37 if (r >= 0) {
38 cls_timeindex_list_ret ret;
39 try {
40 bufferlist::iterator iter = bl.begin();
41 ::decode(ret, iter);
42 if (entries)
43 *entries = ret.entries;
44 if (truncated)
45 *truncated = ret.truncated;
46 if (marker)
47 *marker = ret.marker;
48 } catch (buffer::error& err) {
49 // nothing we can do about it atm
50 }
51 }
52 }
53};
54
55void cls_timeindex_add_prepare_entry(
56 cls_timeindex_entry& entry,
57 const utime_t& key_timestamp,
58 const std::string& key_ext,
59 bufferlist& bl);
60
61void cls_timeindex_add(
62 librados::ObjectWriteOperation& op,
63 const std::list<cls_timeindex_entry>& entry);
64
65void cls_timeindex_add(
66 librados::ObjectWriteOperation& op,
67 const cls_timeindex_entry& entry);
68
69void cls_timeindex_add(
70 librados::ObjectWriteOperation& op,
71 const utime_t& timestamp,
72 const std::string& name,
73 const bufferlist& bl);
74
75void cls_timeindex_list(
76 librados::ObjectReadOperation& op,
77 const utime_t& from,
78 const utime_t& to,
79 const std::string& in_marker,
80 const int max_entries,
81 std::list<cls_timeindex_entry>& entries,
82 std::string *out_marker,
83 bool *truncated);
84
85void cls_timeindex_trim(
86 librados::ObjectWriteOperation& op,
87 const utime_t& from_time,
88 const utime_t& to_time,
89 const std::string& from_marker = std::string(),
90 const std::string& to_marker = std::string());
91
92int cls_timeindex_trim(
93 librados::IoCtx& io_ctx,
94 const std::string& oid,
95 const utime_t& from_time,
96 const utime_t& to_time,
97 const std::string& from_marker = std::string(),
98 const std::string& to_marker = std::string());
99#endif