]> git.proxmox.com Git - ceph.git/blob - ceph/src/cls/journal/cls_journal_client.h
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / cls / journal / cls_journal_client.h
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_JOURNAL_CLIENT_H
5 #define CEPH_CLS_JOURNAL_CLIENT_H
6
7 #include "include/int_types.h"
8 #include "include/rados/librados.hpp"
9 #include "cls/journal/cls_journal_types.h"
10 #include <map>
11 #include <set>
12 #include <string>
13 #include <boost/optional.hpp>
14
15 class Context;
16
17 namespace cls {
18 namespace journal {
19 namespace client {
20
21 void create(librados::ObjectWriteOperation *op,
22 uint8_t order, uint8_t splay, int64_t pool_id);
23 int create(librados::IoCtx &ioctx, const std::string &oid, uint8_t order,
24 uint8_t splay, int64_t pool_id);
25
26 void get_immutable_metadata(librados::IoCtx &ioctx, const std::string &oid,
27 uint8_t *order, uint8_t *splay_width,
28 int64_t *pool_id, Context *on_finish);
29 void get_mutable_metadata(librados::IoCtx &ioctx, const std::string &oid,
30 uint64_t *minimum_set, uint64_t *active_set,
31 std::set<cls::journal::Client> *clients,
32 Context *on_finish);
33
34 void set_minimum_set(librados::ObjectWriteOperation *op, uint64_t object_set);
35 void set_active_set(librados::ObjectWriteOperation *op, uint64_t object_set);
36
37 // journal client helpers
38 int get_client(librados::IoCtx &ioctx, const std::string &oid,
39 const std::string &id, cls::journal::Client *client);
40 void get_client_start(librados::ObjectReadOperation *op,
41 const std::string &id);
42 int get_client_finish(bufferlist::iterator *iter,
43 cls::journal::Client *client);
44
45 int client_register(librados::IoCtx &ioctx, const std::string &oid,
46 const std::string &id, const bufferlist &data);
47 void client_register(librados::ObjectWriteOperation *op,
48 const std::string &id, const bufferlist &data);
49
50 int client_update_data(librados::IoCtx &ioctx, const std::string &oid,
51 const std::string &id, const bufferlist &data);
52 void client_update_data(librados::ObjectWriteOperation *op,
53 const std::string &id, const bufferlist &data);
54 int client_update_state(librados::IoCtx &ioctx, const std::string &oid,
55 const std::string &id, cls::journal::ClientState state);
56 void client_update_state(librados::ObjectWriteOperation *op,
57 const std::string &id,
58 cls::journal::ClientState state);
59
60 int client_unregister(librados::IoCtx &ioctx, const std::string &oid,
61 const std::string &id);
62 void client_unregister(librados::ObjectWriteOperation *op,
63 const std::string &id);
64
65 void client_commit(librados::ObjectWriteOperation *op, const std::string &id,
66 const cls::journal::ObjectSetPosition &commit_position);
67
68 int client_list(librados::IoCtx &ioctx, const std::string &oid,
69 std::set<cls::journal::Client> *clients);
70 void client_list(librados::IoCtx &ioctx, const std::string &oid,
71 std::set<cls::journal::Client> *clients, Context *on_finish);
72
73 // journal tag helpers
74 int get_next_tag_tid(librados::IoCtx &ioctx, const std::string &oid,
75 uint64_t *tag_tid);
76 void get_next_tag_tid_start(librados::ObjectReadOperation *op);
77 int get_next_tag_tid_finish(bufferlist::iterator *iter,
78 uint64_t *tag_tid);
79
80 int get_tag(librados::IoCtx &ioctx, const std::string &oid,
81 uint64_t tag_tid, cls::journal::Tag *tag);
82 void get_tag_start(librados::ObjectReadOperation *op,
83 uint64_t tag_tid);
84 int get_tag_finish(bufferlist::iterator *iter, cls::journal::Tag *tag);
85
86 int tag_create(librados::IoCtx &ioctx, const std::string &oid,
87 uint64_t tag_tid, uint64_t tag_class,
88 const bufferlist &data);
89 void tag_create(librados::ObjectWriteOperation *op,
90 uint64_t tag_tid, uint64_t tag_class,
91 const bufferlist &data);
92
93 int tag_list(librados::IoCtx &ioctx, const std::string &oid,
94 const std::string &client_id, boost::optional<uint64_t> tag_class,
95 std::set<cls::journal::Tag> *tags);
96 void tag_list_start(librados::ObjectReadOperation *op,
97 uint64_t start_after_tag_tid, uint64_t max_return,
98 const std::string &client_id,
99 boost::optional<uint64_t> tag_class);
100 int tag_list_finish(bufferlist::iterator *iter,
101 std::set<cls::journal::Tag> *tags);
102
103 // journal entry helpers
104 void guard_append(librados::ObjectWriteOperation *op, uint64_t soft_max_size);
105
106 } // namespace client
107 } // namespace journal
108 } // namespace cls
109
110 #endif // CEPH_CLS_JOURNAL_CLIENT_H