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

        