]> git.proxmox.com Git - ceph.git/blame - ceph/src/cls/journal/cls_journal_client.h
import 15.2.0 Octopus source
[ceph.git] / ceph / src / cls / journal / cls_journal_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_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
12class Context;
13
14namespace cls {
15namespace journal {
16namespace client {
17
18void create(librados::ObjectWriteOperation *op,
19 uint8_t order, uint8_t splay, int64_t pool_id);
20int create(librados::IoCtx &ioctx, const std::string &oid, uint8_t order,
21 uint8_t splay, int64_t pool_id);
22
23void 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);
26void 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
31void set_minimum_set(librados::ObjectWriteOperation *op, uint64_t object_set);
32void set_active_set(librados::ObjectWriteOperation *op, uint64_t object_set);
33
34// journal client helpers
35int get_client(librados::IoCtx &ioctx, const std::string &oid,
36 const std::string &id, cls::journal::Client *client);
37void get_client_start(librados::ObjectReadOperation *op,
38 const std::string &id);
11fdf7f2 39int get_client_finish(bufferlist::const_iterator *iter,
7c673cae
FG
40 cls::journal::Client *client);
41
42int client_register(librados::IoCtx &ioctx, const std::string &oid,
43 const std::string &id, const bufferlist &data);
44void client_register(librados::ObjectWriteOperation *op,
45 const std::string &id, const bufferlist &data);
46
47int client_update_data(librados::IoCtx &ioctx, const std::string &oid,
48 const std::string &id, const bufferlist &data);
49void client_update_data(librados::ObjectWriteOperation *op,
50 const std::string &id, const bufferlist &data);
51int client_update_state(librados::IoCtx &ioctx, const std::string &oid,
52 const std::string &id, cls::journal::ClientState state);
53void client_update_state(librados::ObjectWriteOperation *op,
54 const std::string &id,
55 cls::journal::ClientState state);
56
57int client_unregister(librados::IoCtx &ioctx, const std::string &oid,
58 const std::string &id);
59void client_unregister(librados::ObjectWriteOperation *op,
60 const std::string &id);
61
62void client_commit(librados::ObjectWriteOperation *op, const std::string &id,
63 const cls::journal::ObjectSetPosition &commit_position);
64
65int client_list(librados::IoCtx &ioctx, const std::string &oid,
66 std::set<cls::journal::Client> *clients);
67void client_list(librados::IoCtx &ioctx, const std::string &oid,
68 std::set<cls::journal::Client> *clients, Context *on_finish);
69
70// journal tag helpers
71int get_next_tag_tid(librados::IoCtx &ioctx, const std::string &oid,
72 uint64_t *tag_tid);
73void get_next_tag_tid_start(librados::ObjectReadOperation *op);
11fdf7f2 74int get_next_tag_tid_finish(bufferlist::const_iterator *iter,
7c673cae
FG
75 uint64_t *tag_tid);
76
77int get_tag(librados::IoCtx &ioctx, const std::string &oid,
78 uint64_t tag_tid, cls::journal::Tag *tag);
79void get_tag_start(librados::ObjectReadOperation *op,
80 uint64_t tag_tid);
11fdf7f2 81int get_tag_finish(bufferlist::const_iterator *iter, cls::journal::Tag *tag);
7c673cae
FG
82
83int tag_create(librados::IoCtx &ioctx, const std::string &oid,
84 uint64_t tag_tid, uint64_t tag_class,
85 const bufferlist &data);
86void tag_create(librados::ObjectWriteOperation *op,
87 uint64_t tag_tid, uint64_t tag_class,
88 const bufferlist &data);
89
90int 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);
93void 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 97int tag_list_finish(bufferlist::const_iterator *iter,
7c673cae
FG
98 std::set<cls::journal::Tag> *tags);
99
100// journal entry helpers
101void guard_append(librados::ObjectWriteOperation *op, uint64_t soft_max_size);
9f95a23c
TL
102void 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