"""This module contains the base state for all other raft states""" import MyRaft.node as node import MyRaft.raft_pb2 as raft_pb2 class State: """Base class to represent state of the system at any point in time. Default behaviour for all messaging methods is to check if term of message is greater than node's term, and if so convert the current node to a follower. """ def __init__(self, context: node.RaftNode): self._context = context self._currentTerm = 0 def heartbeat_elapsed(self): raise NotImplementedError def rcv_RequestVote(self, request): raise NotImplementedError def rcv_AppendEntries(self, request): raise NotImplementedError def rcv_vote(self, request): raise NotImplementedError def rcv_AppendEntriesResponse(self, request): pass