Add files for Paxos decision system.

This commit is contained in:
DSTO\pivatom
2019-01-10 14:54:53 +10:30
parent c12c57bfcf
commit 2abdf7bc1e
6 changed files with 114 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
from Messaging.messaginginterface import Message
import umsgpack
# Uses MessagePack for message transfer.
class Proposal(Message):
ballot_number = None
vote = None
def __init__(self):
pass
def serialise(self) -> str:
return umsgpack.packb({"ballot": self.ballot_number, "vote": self.vote})
def deserialise(self, binary: bytearray):
'''
Deserialises a given proposal message into a proposal object.
'''
obj = umsgpack.unpackb(binary)
old_ballot = self.ballot_number
old_vote = self.vote
try:
self.ballot_number = obj['ballot']
self.vote = obj['vote']
except:
# Reset the values in case they have been changed.
self.ballot_number = old_ballot
self.vote = old_vote
print("Error: binary object is not a proposal")