Fix some bugs when testing opensds ansible
[stor4nfv.git] / src / ceph / src / tools / rbd_mirror / image_replayer / CloseImageRequest.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
3
4 #ifndef RBD_MIRROR_IMAGE_REPLAYER_CLOSE_IMAGE_REQUEST_H
5 #define RBD_MIRROR_IMAGE_REPLAYER_CLOSE_IMAGE_REQUEST_H
6
7 #include "include/int_types.h"
8 #include "librbd/ImageCtx.h"
9 #include <string>
10
11 class Context;
12 namespace librbd { class ImageCtx; }
13
14 namespace rbd {
15 namespace mirror {
16 namespace image_replayer {
17
18 template <typename ImageCtxT = librbd::ImageCtx>
19 class CloseImageRequest {
20 public:
21   static CloseImageRequest* create(ImageCtxT **image_ctx, Context *on_finish) {
22     return new CloseImageRequest(image_ctx, on_finish);
23   }
24
25   CloseImageRequest(ImageCtxT **image_ctx, Context *on_finish);
26
27   void send();
28
29 private:
30   /**
31    * @verbatim
32    *
33    * <start>
34    *    |
35    *    v
36    * CLOSE_IMAGE
37    *    |
38    *    v
39    * <finish>
40    *
41    * @endverbatim
42    */
43   ImageCtxT **m_image_ctx;
44   Context *m_on_finish;
45
46   void close_image();
47   void handle_close_image(int r);
48 };
49
50 } // namespace image_replayer
51 } // namespace mirror
52 } // namespace rbd
53
54 extern template class rbd::mirror::image_replayer::CloseImageRequest<librbd::ImageCtx>;
55
56 #endif // RBD_MIRROR_IMAGE_REPLAYER_CLOSE_IMAGE_REQUEST_H