]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: session skeleton
authorSage Weil <sage@newdream.net>
Wed, 23 Sep 2009 18:25:28 +0000 (11:25 -0700)
committerSage Weil <sage@newdream.net>
Wed, 23 Sep 2009 18:25:28 +0000 (11:25 -0700)
src/osd/OSD.cc
src/osd/OSD.h

index 62427d61282493eaa8da2edba5a26aee05a91f21..7b647891db358ff80c281aafd8af574fab30b6ee 100644 (file)
@@ -41,6 +41,7 @@
 
 #include "messages/MGenericMessage.h"
 #include "messages/MPing.h"
+#include "messages/MAuth.h"
 #include "messages/MOSDPing.h"
 #include "messages/MOSDFailure.h"
 #include "messages/MOSDOp.h"
@@ -238,6 +239,7 @@ OSD::OSD(int id, Messenger *m, Messenger *hbm, MonClient *mc, const char *dev, c
   op_tp("OSD::op_tp", g_conf.osd_maxthreads),
   recovery_tp("OSD::recovery_tp", 1),
   disk_tp("OSD::disk_tp", 2),
+  session_lock("OSD::session_lock"),
   heartbeat_lock("OSD::heartbeat_lock"),
   heartbeat_stop(false), heartbeat_epoch(0),
   heartbeat_messenger(hbm),
@@ -1548,6 +1550,10 @@ void OSD::_dispatch(Message *m)
 
   switch (m->get_type()) {
 
+  case CEPH_MSG_AUTH:
+    handle_auth((MAuth*)m);
+    break;
+
     // -- don't need lock -- 
   case CEPH_MSG_PING:
     dout(10) << "ping from " << m->get_source() << dendl;
@@ -4115,3 +4121,30 @@ void OSD::init_op_flags(MOSDOp *op)
   }
 }
 
+
+void OSD::handle_auth(MAuth *m)
+{
+  dout(10) << "handle_auth " << *m << dendl;
+  Mutex::Locker l(session_lock);
+
+  Session *s = (Session *)m->get_connection()->get_priv();
+  if (!s) {
+    s = new Session;
+    m->get_connection()->set_priv(s->get());
+    dout(10) << " new session " << s << dendl;
+  }
+
+  /*
+  bufferlist::iterator p = m->auth_payload.begin();
+  AuthBlob blob;
+  ::decode(blob, p);
+
+  AuthTicket ticket;
+  decode_decrypt(blob.blob, 
+  ::decode(
+  */
+
+
+  s->put();
+  delete m;
+}
index ed2c7b5d5173c3e6f89c5959e0dcb3e0392abc9a..26c29e0089ebeb2424255d92360163b485f6e388 100644 (file)
@@ -88,9 +88,10 @@ class ObjectStore;
 class OSDMap;
 class MLog;
 class MClass;
+class MAuth;
 
-class OSD : public Dispatcher {
 
+class OSD : public Dispatcher {
   /** OSD **/
 protected:
   Mutex osd_lock;     // global lock
@@ -176,6 +177,16 @@ private:
   ThreadPool recovery_tp;
   ThreadPool disk_tp;
 
+  // -- sessions --
+public:
+  struct Session : public RefCountedObject {
+    AuthTicket ticket;
+  };
+
+private:
+  Mutex session_lock;
+  
+  void handle_auth(MAuth *m);
 
 
   // -- heartbeat --