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_LOCK_OPS_H
5 #define CEPH_CLS_LOCK_OPS_H
7 #include "include/types.h"
8 #include "include/utime.h"
9 #include "cls/lock/cls_lock_types.h"
11 struct cls_lock_lock_op
21 cls_lock_lock_op() : type(LOCK_NONE
), flags(0) {}
23 void encode(bufferlist
&bl
) const {
24 ENCODE_START(1, 1, bl
);
26 uint8_t t
= (uint8_t)type
;
30 encode(description
, bl
);
35 void decode(bufferlist::const_iterator
&bl
) {
36 DECODE_START_LEGACY_COMPAT_LEN(1, 1, 1, bl
);
40 type
= (ClsLockType
)t
;
43 decode(description
, bl
);
48 void dump(Formatter
*f
) const;
49 static void generate_test_instances(list
<cls_lock_lock_op
*>& o
);
51 WRITE_CLASS_ENCODER(cls_lock_lock_op
)
53 struct cls_lock_unlock_op
58 cls_lock_unlock_op() {}
60 void encode(bufferlist
&bl
) const {
61 ENCODE_START(1, 1, bl
);
66 void decode(bufferlist::const_iterator
&bl
) {
67 DECODE_START_LEGACY_COMPAT_LEN(1, 1, 1, bl
);
72 void dump(Formatter
*f
) const;
73 static void generate_test_instances(list
<cls_lock_unlock_op
*>& o
);
75 WRITE_CLASS_ENCODER(cls_lock_unlock_op
)
77 struct cls_lock_break_op
83 cls_lock_break_op() {}
85 void encode(bufferlist
&bl
) const {
86 ENCODE_START(1, 1, bl
);
92 void decode(bufferlist::const_iterator
&bl
) {
93 DECODE_START_LEGACY_COMPAT_LEN(1, 1, 1, bl
);
99 void dump(Formatter
*f
) const;
100 static void generate_test_instances(list
<cls_lock_break_op
*>& o
);
102 WRITE_CLASS_ENCODER(cls_lock_break_op
)
104 struct cls_lock_get_info_op
108 cls_lock_get_info_op() {}
110 void encode(bufferlist
&bl
) const {
111 ENCODE_START(1, 1, bl
);
115 void decode(bufferlist::const_iterator
&bl
) {
116 DECODE_START_LEGACY_COMPAT_LEN(1, 1, 1, bl
);
120 void dump(Formatter
*f
) const;
121 static void generate_test_instances(list
<cls_lock_get_info_op
*>& o
);
123 WRITE_CLASS_ENCODER(cls_lock_get_info_op
)
125 struct cls_lock_get_info_reply
127 map
<rados::cls::lock::locker_id_t
, rados::cls::lock::locker_info_t
> lockers
;
128 ClsLockType lock_type
;
131 cls_lock_get_info_reply() : lock_type(LOCK_NONE
) {}
133 void encode(bufferlist
&bl
, uint64_t features
) const {
134 ENCODE_START(1, 1, bl
);
135 encode(lockers
, bl
, features
);
136 uint8_t t
= (uint8_t)lock_type
;
141 void decode(bufferlist::const_iterator
&bl
) {
142 DECODE_START_LEGACY_COMPAT_LEN(1, 1, 1, bl
);
146 lock_type
= (ClsLockType
)t
;
150 void dump(Formatter
*f
) const;
151 static void generate_test_instances(list
<cls_lock_get_info_reply
*>& o
);
153 WRITE_CLASS_ENCODER_FEATURES(cls_lock_get_info_reply
)
155 struct cls_lock_list_locks_reply
159 cls_lock_list_locks_reply() {}
161 void encode(bufferlist
&bl
) const {
162 ENCODE_START(1, 1, bl
);
166 void decode(bufferlist::const_iterator
&bl
) {
167 DECODE_START_LEGACY_COMPAT_LEN(1, 1, 1, bl
);
171 void dump(Formatter
*f
) const;
172 static void generate_test_instances(list
<cls_lock_list_locks_reply
*>& o
);
174 WRITE_CLASS_ENCODER(cls_lock_list_locks_reply
)
176 struct cls_lock_assert_op
183 cls_lock_assert_op() : type(LOCK_NONE
) {}
185 void encode(bufferlist
&bl
) const {
186 ENCODE_START(1, 1, bl
);
188 uint8_t t
= (uint8_t)type
;
194 void decode(bufferlist::const_iterator
&bl
) {
195 DECODE_START_LEGACY_COMPAT_LEN(1, 1, 1, bl
);
199 type
= (ClsLockType
)t
;
204 void dump(Formatter
*f
) const;
205 static void generate_test_instances(list
<cls_lock_assert_op
*>& o
);
207 WRITE_CLASS_ENCODER(cls_lock_assert_op
)
209 struct cls_lock_set_cookie_op
217 cls_lock_set_cookie_op() : type(LOCK_NONE
) {}
219 void encode(bufferlist
&bl
) const {
220 ENCODE_START(1, 1, bl
);
222 uint8_t t
= (uint8_t)type
;
226 encode(new_cookie
, bl
);
229 void decode(bufferlist::const_iterator
&bl
) {
230 DECODE_START_LEGACY_COMPAT_LEN(1, 1, 1, bl
);
234 type
= (ClsLockType
)t
;
237 decode(new_cookie
, bl
);
240 void dump(Formatter
*f
) const;
241 static void generate_test_instances(list
<cls_lock_set_cookie_op
*>& o
);
243 WRITE_CLASS_ENCODER(cls_lock_set_cookie_op
)