예제 #1
0
def main():
    """Run on program start.

    Checks for other masters and initiates itself as either master or slave.

    """
    m_sock = network.socket_setup(39500)
    try:
        master_addr = m_sock.recvfrom(4096)[1]
    except socket.timeout:
        state = 'master'
    m_sock.close()

    if state == 'master':
        mstr = master.Master()
        mstr.run()
        print_thread = Thread(target=mstr.print_system)
        print_thread.setDaemon(True)
        print_thread.start()
        elev = elevator.Elev()
        elev.state = 'master'
        elev.master_addr = mstr.ip
        elev.run(constants.ELEV_MODE)
        states.master()

    else:
        elev = elevator.Elev()
        elev.master_addr = master_addr[0]
        elev.run(constants.ELEV_MODE)
        states.slave(elev)
        backup = master.Master()
        elev.backup = backup
        states.backup(elev, backup)
        states.master()
예제 #2
0
def backup(elev, backup):
    listen_master = network.socket_setup(39500)
    while elev.state == 'backup':
        backup.print_system()
        try:
            msg = listen_master.recv(4096)
        except (socket.timeout):
            state = 'master'
            listen_master.close()
            backup.backup_ip = ''
            backup.run()
            #Change state to master
            #Clear all backup attributes
        except (KeyboardInterrupt):
            backup = False
            listen_master.close()
예제 #3
0
파일: states.py 프로젝트: sindrehan/TTK4145
def backup(elev, backup):
        listen_master = network.socket_setup(39500)
        while elev.state == 'backup':
            backup.print_system()
            try:
                msg = listen_master.recv(4096)
            except(socket.timeout):
                state = 'master'
                listen_master.close()
                backup.backup_ip = ''
                backup.run()
                #Change state to master
                #Clear all backup attributes
            except(KeyboardInterrupt):
                backup = False
                listen_master.close()