Source code for raftnode.raftnode

"""Main module."""
from threading import Thread
from raftnode import logger
from raftnode.election import Election
from raftnode.store import Store
from raftnode.transport import Transport


[docs]class RaftNode(Transport): def __init__(self, my_ip: str, peers: list, timeout: int, **kwargs): self.__store = Store(**kwargs) self.__transport = Transport(my_ip, timeout=timeout) self.__election = Election( transport=self.__transport, store=self.__store) self.__peers = peers
[docs] def run(self): ''' start the server, add peers and election timer ''' logger.info('starting transport') self.start_transport() logger.info('adding peers') self.start_adding_peers(peers=self.__peers) logger.info('initializing timeout')
# self.start_timeout()
[docs] def start_transport(self): ''' start the socket server for this node ''' Thread(target=self.__transport.serve, args=(self.__election,)).start()
[docs] def start_adding_peers(self, peers): ''' if peers are specified at the runtime, add them to the list of peers ''' if peers: for peer in peers: Thread(target=self.__transport.req_add_peer, args=(peer,)).start()
[docs] def start_timeout(self): ''' start the election timer ''' self.__election.init_timeout()