]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
function skeletons
authorriccardo80 <riccardo80@29311d96-e01e-0410-9327-a35deaab8ce9>
Thu, 15 Feb 2007 10:27:58 +0000 (10:27 +0000)
committerriccardo80 <riccardo80@29311d96-e01e-0410-9327-a35deaab8ce9>
Thu, 15 Feb 2007 10:27:58 +0000 (10:27 +0000)
git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@1096 29311d96-e01e-0410-9327-a35deaab8ce9

branches/riccardo/monitor2/mon/Paxos.cc
branches/riccardo/monitor2/mon/Paxos.h

index 9d01f5e138b1e0bdc0296aa421b447acdca426e4..adafbe652d8e0f697032e6bcf968857ed7cb3e0f 100644 (file)
 
 // ---------------------------------
 // proposer
-
-
+void Paxos::propose(version_t v, bufferlist& value)
+{
+//todo high rf
+}
+  
 void Paxos::handle_last(MMonPaxos *m)
 {
+//todo high rf
   dout(10) << "handle_last " << *m << endl;
+  delete m;
+}
+
+void Paxos::handle_accept(MMonPaxos *m)
+{
+//todo high rf
+  dout(10) << "handle_accept " << *m << endl;
+  delete m;
   
-  // ...
+}
 
+void Paxos::handle_ack(MMonPaxos *m)
+{
+//todo high rf
+  dout(10) << "handle_ack " << *m << endl;
   delete m;
 }
 
+void Paxos::handle_old_round(MMonPaxos *m)
+{
+//todo high rf
+  dout(10) << "handle_old_round " << *m << endl;
+  delete m;
+}
+  
 
 /*
  * return a globally unique, monotonically increasing proposal number
@@ -57,11 +80,9 @@ version_t Paxos::get_new_proposal_number()
 
 // ---------------------------------
 // accepter
-
-
-void Paxos::handle_commit(MMonPaxos *m)
+void Paxos::handle_collect(MMonPaxos *m)
 {
-
+//todo high rf
   // ...
 
   delete m;
@@ -72,10 +93,17 @@ void Paxos::handle_commit(MMonPaxos *m)
 
 // ---------------------------------
 // learner
+void Paxos::handle_success(MMonPaxos *m)
+{
+  //todo high rf
+  delete m;
+}
 
-
-
-
+void Paxos::handle_begin(MMonPaxos *m)
+{
+  //todo high rf
+  delete m;
+}
 
 // ---------------------------------
 
@@ -84,11 +112,13 @@ void Paxos::leader_start()
   dout(10) << "i am the leader" << endl;
 
   // .. do something else too 
-
-
-  //int who = 2;
-  //mon->messenger->send_message(new MMonPaxos(MMonPaxos::OP_COMMIT, machine_id, 12, 122),
-  //MSG_ADDR_MON(who), mon->monmap->get_inst(who));
+  version_t pn = get_new_proposal_number();
+  for (int i=0; i<mon->monmap->num_mon; ++i) {
+       if (i == whoami) continue;
+       // todo high rf I pass the pn twice... what is the last parameter for?
+       mon->messenger->send_message(new MMonPaxos(MMonPaxos::OP_COLLECT, whoami, pn, pn),
+                                                                MSG_ADDR_MON(i), mon->monmap->get_inst(i));
+  }
 }
 
 
@@ -102,15 +132,34 @@ void Paxos::dispatch(Message *m)
          MMonPaxos *pm = (MMonPaxos*)m;
 
          // NOTE: these ops are defined in messages/MMonPaxos.h
-         // todo rf
          switch (pm->op) {
                // learner
-         case MMonPaxos::OP_PROPOSE:
+         case MMonPaxos::OP_COLLECT:
+               handle_collect(pm);
+               break;
+               
+         case MMonPaxos::OP_LAST:
                handle_last(pm);
                break;
 
-         case MMonPaxos::OP_COMMIT:
-               handle_commit(pm);
+         case MMonPaxos::OP_OLDROUND:
+               handle_old_round(pm);
+               break;
+
+         case MMonPaxos::OP_BEGIN:
+               handle_begin(pm);
+               break;
+
+         case MMonPaxos::OP_ACCEPT:
+               handle_accept(pm);
+               break;          
+
+         case MMonPaxos::OP_SUCCESS:
+               handle_success(pm);
+               break;
+
+         case MMonPaxos::OP_ACK:
+               handle_ack(pm);
                break;
 
          default:
index 93f1982415c8f3546778b99ae628dd2d3a07b3f1..3bf934be130075fcfce460762bb7cfb6f3476c19 100644 (file)
@@ -39,17 +39,20 @@ class Paxos {
 
   // proposer
   void propose(version_t v, bufferlist& value);
+  
   void handle_last(MMonPaxos*);
   void handle_accept(MMonPaxos*);
-
+  void handle_ack(MMonPaxos*);
+  void handle_old_round(MMonPaxos*);
+  
   version_t get_new_proposal_number();
   
   // accepter
-  void handle_prepare(MMonPaxos*);  
-  void handle_commit(MMonPaxos*);
+  void handle_collect(MMonPaxos*);
 
   // learner
-  
+  void handle_success(MMonPaxos*);
+  void handle_begin(MMonPaxos*);
   
 
 public: