]>
git.proxmox.com Git - ceph.git/blob - 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
4 #ifndef CEPH_CLS_JOURNAL_CLIENT_H
5 #define CEPH_CLS_JOURNAL_CLIENT_H
7 #include "include/rados/librados_fwd.hpp"
8 #include "cls/journal/cls_journal_types.h"
10 #include <boost/optional.hpp>
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
);
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
,
31 void set_minimum_set(librados::ObjectWriteOperation
*op
, uint64_t object_set
);
32 void set_active_set(librados::ObjectWriteOperation
*op
, uint64_t object_set
);
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
);
39 int get_client_finish(bufferlist::const_iterator
*iter
,
40 cls::journal::Client
*client
);
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
);
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
);
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
);
62 void client_commit(librados::ObjectWriteOperation
*op
, const std::string
&id
,
63 const cls::journal::ObjectSetPosition
&commit_position
);
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
);
70 // journal tag helpers
71 int get_next_tag_tid(librados::IoCtx
&ioctx
, const std::string
&oid
,
73 void get_next_tag_tid_start(librados::ObjectReadOperation
*op
);
74 int get_next_tag_tid_finish(bufferlist::const_iterator
*iter
,
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
,
81 int get_tag_finish(bufferlist::const_iterator
*iter
, cls::journal::Tag
*tag
);
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
);
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
);
97 int tag_list_finish(bufferlist::const_iterator
*iter
,
98 std::set
<cls::journal::Tag
> *tags
);
100 // journal entry helpers
101 void guard_append(librados::ObjectWriteOperation
*op
, uint64_t soft_max_size
);
102 void append(librados::ObjectWriteOperation
*op
, uint64_t soft_max_size
,
105 } // namespace client
106 } // namespace journal
109 #endif // CEPH_CLS_JOURNAL_CLIENT_H