Ejemplo n.º 1
0
    #select.select takes first a read list and a write list
    read_sockets, _, exception_sockets = select.select(sockets_list, [],
                                                       sockets_list)
    for incoming_socket in read_sockets:
        if incoming_socket == venus_socket:
            vice_socket, vice_address = venus_socket.accept()
            client_data = receive_message(vice_socket)
            if client_data is False:
                continue

            sockets_list.append(vice_socket)
            vice_data[vice_socket] = client_data
            print("Message received")
        else:
            message = receive_message(incoming_socket)
            if message is False:
                print(
                    f"Closed Connection from {vice_data[incoming_socket]['data'].decode('utf-8')}"
                )
                sockets_list.remove(incoming_socket)
                del vice_data[incoming_socket]
                continue
            user = vice_data[incoming_socket]
            print(f"Received message from {user['data'].decode('utf-8')}")
            #Below here is where you place message handling/protocols/propogation
            if message['type'] == message_type.file_request:
                file_obj = vice_file.open(message['body'])
            elif (message['type'] == message_type.file_update):
                print(message['file_name'] + " has been changed ")
                # code to propagate changes and protocols