1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
4 #ifndef CEPH_LIBRBD_IMAGE_LIST_WATCHERS_REQUEST_H
5 #define CEPH_LIBRBD_IMAGE_LIST_WATCHERS_REQUEST_H
7 #include "include/rados/rados_types.hpp"
20 LIST_WATCHERS_FILTER_OUT_MY_INSTANCE
= 1 << 0,
21 LIST_WATCHERS_FILTER_OUT_MIRROR_INSTANCES
= 1 << 1,
22 LIST_WATCHERS_MIRROR_INSTANCES_ONLY
= 1 << 3,
25 template<typename ImageCtxT
= ImageCtx
>
26 class ListWatchersRequest
{
28 static ListWatchersRequest
*create(ImageCtxT
&image_ctx
, int flags
,
29 std::list
<obj_watch_t
> *watchers
,
31 return new ListWatchersRequest(image_ctx
, flags
, watchers
, on_finish
);
46 * LIST_MIRROR_WATCHERS (skip if not needed)
54 ListWatchersRequest(ImageCtxT
&image_ctx
, int flags
, std::list
<obj_watch_t
> *watchers
,
57 ImageCtxT
& m_image_ctx
;
59 std::list
<obj_watch_t
> *m_watchers
;
65 std::list
<obj_watch_t
> m_object_watchers
;
66 std::list
<obj_watch_t
> m_mirror_watchers
;
68 void list_image_watchers();
69 void handle_list_image_watchers(int r
);
71 void list_mirror_watchers();
72 void handle_list_mirror_watchers(int r
);
80 extern template class librbd::image::ListWatchersRequest
<librbd::ImageCtx
>;
82 #endif // CEPH_LIBRBD_IMAGE_LIST_WATCHERS_REQUEST_H