summaryrefslogtreecommitdiffstats
path: root/src/rgw/rgw_kmip_client_impl.h
blob: d36903a4b79592574c579d1910e7aca64a273642 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
// vim: ts=8 sw=2 smarttab ft=cpp

#pragma once

struct RGWKmipWorker;
class RGWKMIPManagerImpl: public RGWKMIPManager {
protected:
  ceph::mutex lock = ceph::make_mutex("RGWKMIPManager");
  ceph::condition_variable cond;

  struct Request : boost::intrusive::list_base_hook<> {
    boost::intrusive::list_member_hook<> req_hook;
    RGWKMIPTransceiver &details;
    Request(RGWKMIPTransceiver &details) : details(details) {}
  };
  boost::intrusive::list<Request, boost::intrusive::member_hook< Request,
  boost::intrusive::list_member_hook<>, &Request::req_hook>> requests;
  bool going_down = false;
  RGWKmipWorker *worker = 0;
public:
  RGWKMIPManagerImpl(CephContext *cct) : RGWKMIPManager(cct) {};
  int add_request(RGWKMIPTransceiver *);
  int start();
  void stop();
  friend RGWKmipWorker;
};