Files
picar/DecisionSystem/PaxosDecision/proposal.py
2019-01-10 14:54:53 +10:30

32 lines
892 B
Python

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")