]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
journal: helper method to retrieve in-memory client data
authorJason Dillaman <dillaman@redhat.com>
Fri, 26 Feb 2016 15:55:27 +0000 (10:55 -0500)
committerJason Dillaman <dillaman@redhat.com>
Tue, 8 Mar 2016 14:03:43 +0000 (09:03 -0500)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/journal/Journaler.cc
src/journal/Journaler.h

index a6220ef1012afbd91d4115492c2c7982e3de6476..f81e6f611629a4a6a1fbee86042d7ae4ba28941c 100644 (file)
@@ -199,6 +199,20 @@ void Journaler::unregister_client(Context *on_finish) {
   return m_metadata->unregister_client(on_finish);
 }
 
+int Journaler::get_cached_client(const std::string &client_id,
+                                 cls::journal::Client *client) {
+  RegisteredClients clients;
+  m_metadata->get_registered_clients(&clients);
+
+  auto it = clients.find({client_id, {}});
+  if (it == clients.end()) {
+    return -ENOENT;
+  }
+
+  *client = *it;
+  return 0;
+}
+
 void Journaler::allocate_tag(const bufferlist &data, cls::journal::Tag *tag,
                              Context *on_finish) {
   m_metadata->allocate_tag(cls::journal::Tag::TAG_CLASS_NEW, data, tag,
index 2e9ba85bb20836c2d65b19584acc97df3434ea58..2ce8acd7692bfc91fa0edd4745ca131f0ef02b9e 100644 (file)
@@ -52,11 +52,16 @@ public:
                            RegisteredClients *clients, Context *on_finish);
 
   int register_client(const bufferlist &data);
-  int unregister_client();
   void register_client(const bufferlist &data, Context *on_finish);
-  void update_client(const bufferlist &data, Context *on_finish);
+
+  int unregister_client();
   void unregister_client(Context *on_finish);
 
+  void update_client(const bufferlist &data, Context *on_finish);
+
+  int get_cached_client(const std::string &client_id,
+                        cls::journal::Client *client);
+
   void flush_commit_position(Context *on_safe);
 
   void allocate_tag(const bufferlist &data, cls::journal::Tag *tag,