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