Example #1
0
 def __init__(self, env, me):
     Process.__init__(self)
     self.ballot_number = None
     self.accepted = PValueSet()
     self.me = me
     self.env = env
     self.env.addProc(self)
Example #2
0
  def body(self):
    waitfor = set()
    for a in self.acceptors:
      self.sendMessage(a, P1aMessage(self.me, self.ballot_number))
      waitfor.add(a)

    pvalues = PValueSet()
    while True:
      msg = self.getNextMessage()
      if isinstance(msg, P1bMessage):
        if self.ballot_number == msg.ballot_number and msg.src in waitfor:
          pvalues.update(msg.accepted)
          waitfor.remove(msg.src)
          if (2 * len(waitfor)) > len(self.acceptors):
            self.sendMessage(self.leader, AdoptedMessage(self.me, self.ballot_number, pvalues))
            return
          else:
            self.sendMessage(self.leader, PreemptedMessage(self.me, msg.ballot_number))
            return
        else:
          print "Scout: unexpected msg"