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_INFO_REQUEST_H
5 #define CEPH_LIBRBD_MIRROR_GET_INFO_REQUEST_H
7 #include "include/buffer.h"
8 #include "librbd/mirror/Types.h"
12 namespace cls { namespace rbd { struct MirrorImage; } }
20 template <typename ImageCtxT = librbd::ImageCtx>
21 class GetInfoRequest {
23 static GetInfoRequest *create(ImageCtxT &image_ctx,
24 cls::rbd::MirrorImage *mirror_image,
25 PromotionState *promotion_state,
27 return new GetInfoRequest(image_ctx, mirror_image, promotion_state,
31 GetInfoRequest(ImageCtxT &image_ctx, cls::rbd::MirrorImage *mirror_image,
32 PromotionState *promotion_state, Context *on_finish)
33 : m_image_ctx(image_ctx), m_mirror_image(mirror_image),
34 m_promotion_state(promotion_state), m_on_finish(on_finish) {
60 ImageCtxT &m_image_ctx;
61 cls::rbd::MirrorImage *m_mirror_image;
62 PromotionState *m_promotion_state;
66 std::string m_mirror_uuid;
69 void handle_refresh_image(int r);
71 void get_mirror_image();
72 void handle_get_mirror_image(int r);
75 void handle_get_tag_owner(int r);
84 extern template class librbd::mirror::GetInfoRequest<librbd::ImageCtx>;
86 #endif // CEPH_LIBRBD_MIRROR_GET_INFO_REQUEST_H