def report_new_node(new_node): try: if app.status == C.STATUS_LEADER: app_logger.info(info_stamp() + "%s joined", new_node) app.conn.broadcast_new_node(new_node, app.topology) else: leaderip, leaderport = decode_id(app.nodes[C.NODE_LEADER]) app.conn.new_node_report(leaderip, leaderport, new_node) except: pass
def process_leader_message(leader_json): if leader_json == app.id: app_logger.debug(debug_stamp() + 'Leader information distributed successfully') backip, backport = decode_id(app.nodes[C.NODE_BACK]) elif app.nodes[C.NODE_FRONT]: dstip, dstport = decode_id(app.nodes[C.NODE_FRONT]) app.conn.send_leader(dstip, dstport, leader_json) app.nodes[C.NODE_LEADER] = leader_json app_logger.info(info_stamp() + 'New leader: %s', app.nodes[C.NODE_LEADER])
def report_dead_node(dead_node): try: leaderip, leaderport = decode_id(app.nodes[C.NODE_LEADER]) if app.status == C.STATUS_LEADER: app_logger.info(info_stamp() + "%s lost connection", dead_node) app.conn.broadcast_dead_node(dead_node, app.topology) remove_node(dead_node) else: app.conn.death_report(leaderip, leaderport, dead_node) except: pass
def logout(): if app.nodes[C.NODE_FRONT] != app.nodes[C.NODE_BACK]: backip, backport = decode_id(app.nodes[C.NODE_BACK]) frontip, frontport = decode_id(app.nodes[C.NODE_FRONT]) app.conn.send_front_setting(backip, backport, app.nodes[C.NODE_FRONT]) app.conn.send_back_setting(frontip, frontport, app.nodes[C.NODE_BACK]) if app.status == C.STATUS_LEADER: app.conn.broadcast_loggedout_node(app.id, app.topology) app_logger.info(info_stamp() + "Logging out...") report_logout(app.id) os._exit(0)
def heartbeat(): while True: try: leader_ip, leaderport = decode_id(app.nodes[C.NODE_LEADER]) if app.status != C.STATUS_LEADER: app.conn.heartbeat(leader_ip, leaderport) except: if app.nodes[C.NODE_LEADER]: app_logger.info(info_stamp() + "%s lost connection", app.nodes[C.NODE_LEADER]) app.nodes[C.NODE_LEADER] = None finally: time.sleep(C.SLEEP_TIME)
def process_welcome_json(json): try: app.nodes[C.NODE_BACK] = json[C.NODE_BACK] except: pass try: app.nodes[C.NODE_FRONT] = json[C.NODE_FRONT] except: pass try: app.nodes[C.NODE_LEADER] = json[C.NODE_LEADER] if app.nodes[C.NODE_LEADER]: app_logger.info(info_stamp() + 'New leader: %s', app.nodes[C.NODE_LEADER]) except: pass
def process_info_death(dead_node): # follower app_logger.info(info_stamp() + "%s lost connection", dead_node)
def process_dead_node(dead_node): app_logger.info(info_stamp() + "%s lost connection", dead_node) remove_node(dead_node) app.conn.broadcast_dead_node(dead_node, app.topology)
def process_info_new(new_node): # follower app_logger.info(info_stamp() + "%s joined", new_node)
def process_new_node(new_node): # leader app_logger.info(info_stamp() + "%s joined", new_node) app.conn.broadcast_new_node(new_node, app.topology)
def process_info_loggedout(loggedout_node): # follower app_logger.info(info_stamp() + "%s logged out", loggedout_node)
def process_logout(loggedout_node): # leader # TODO report death to all nodes app_logger.info(info_stamp() + "%s logged out", loggedout_node) remove_node(loggedout_node) app.conn.broadcast_loggedout_node(loggedout_node, app.topology)