diff --git a/DecisionSystem/messages.py b/DecisionSystem/messages.py new file mode 100644 index 0000000..2a8a8c1 --- /dev/null +++ b/DecisionSystem/messages.py @@ -0,0 +1,62 @@ +import umsgpack + +class Message: + def __init__(self, sender = None, data = None): + self._sender = sender + self._data = data + + @property + def sender(self): + return self._sender + + @property + def data(self): + return self._data + + @property + def type(self): + return self._type + + @type.setter + def type(self, value): + self._type = value + + def serialise(self): + return umsgpack.packb({"type":self.type, "sender": self.sender, "data": self.data}) + + def deserialise(self, obj): + unpacked = umsgpack.unpackb(obj) + self.type = unpacked["type"] + self.sender = unpacked["sender"] + self.data = unpacked["data"] + return self + +class RequestLeader(Message): + _type = "RequestLeader" + +class ProposeMessage(Message): + _type = "Propose" + +class ElectionVote(Message): + _type = "Elect" + +class Commit(Message): + _type = "Commit" + +class ConnectSwarm(Message): + _type = "connect" + +class RequestVote(Message): + _type = "reqvote" + +class ConnectResponse(Message): + _type = "accepted" + +class VoterWill(Message): + _type = "disconnectedvoter" + +class CommanderWill(Message): + _type = "disconnectedcommander" + +class SubmitVote(Message): + _type = "vote" \ No newline at end of file