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_MIRROR_GET_STATUS_REQUEST_H
5 #define CEPH_LIBRBD_MIRROR_GET_STATUS_REQUEST_H
7 #include "include/buffer.h"
8 #include "librbd/mirror/Types.h"
12 namespace cls { namespace rbd { struct MirrorImage; } }
13 namespace cls { namespace rbd { struct MirrorImageStatus; } }
21 template <typename ImageCtxT = librbd::ImageCtx>
22 class GetStatusRequest {
24 static GetStatusRequest *create(ImageCtxT &image_ctx,
25 cls::rbd::MirrorImageStatus *status,
26 cls::rbd::MirrorImage *mirror_image,
27 PromotionState *promotion_state,
29 return new GetStatusRequest(image_ctx, status, mirror_image,
30 promotion_state, on_finish);
33 GetStatusRequest(ImageCtxT &image_ctx, cls::rbd::MirrorImageStatus *status,
34 cls::rbd::MirrorImage *mirror_image,
35 PromotionState *promotion_state, Context *on_finish)
36 : m_image_ctx(image_ctx), m_mirror_image_status(status),
37 m_mirror_image(mirror_image), m_promotion_state(promotion_state),
38 m_on_finish(on_finish) {
61 ImageCtxT &m_image_ctx;
62 cls::rbd::MirrorImageStatus *m_mirror_image_status;
63 cls::rbd::MirrorImage *m_mirror_image;
64 PromotionState *m_promotion_state;
70 void handle_get_info(int r);
73 void handle_get_status(int r);
82 extern template class librbd::mirror::GetStatusRequest<librbd::ImageCtx>;
84 #endif // CEPH_LIBRBD_MIRROR_GET_STATUS_REQUEST_H