Ejemplo n.º 1
0
 def handle_connection(addr, conn):
     peer = PeerConnection(addr[0], sock=conn)
     (message_type, data_1) = peer.receive()
     logger.debug("Recieved {0} message from {1}:{2} Data: {3}".format(
         message_type, *addr, data_1))
     # print(message_type + " : " + data_1)
     # del peer
     # Execute the associated Handle
     self.handlers[message_type](peer, data_1)
Ejemplo n.º 2
0
 def check_life(self, peer_addr: str):
     """
     Checks whether a peer is alive or not
     :param peer_addr: IP address of peer
     :return: True if peer is alive else False
     """
     peer_conn = PeerConnection(peer_addr)
     peer_conn.send(PING, '')
     message_type, data = peer_conn.receive()
     if message_type == PONG:
         return True
     del self.peer.peer_list[peer_conn.peer_addr]
     self.no_of_peers -= 1
     return False
Ejemplo n.º 3
0
    def handle_get_file(self, peer_conn: PeerConnection, filename: str):
        local_files = [ele[0] for ele in self.get_local_files()]
        if filename not in local_files:
            peer_conn.send(ERROR, "{} not found".format(filename))
            return

        fd = open(self.watch_directory / filename, 'rb')
        data = fd.read()
        # while True:
        #    segment = fd.read(2048)
        #    if not len(segment):
        #        break
        #    data += segment
        fd.close()
        peer_conn.send(REPLY, data)
Ejemplo n.º 4
0
 def receive_bcast(self):
     try:
         while True:
             msg, addr = self.bcast_soc.recvfrom(1024)
             if addr[0] != get_host_ip():
                 logger.debug("Broadcast from " + addr[0] + "Message :" +
                              msg.decode())
                 # s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                 # s.connect((addr[0], CONN_PORT))
                 # s.sendall(b'PONG')
                 # data = s.recv(1024)
                 # s.close()
                 peer = PeerConnection(addr[0])
                 peer.send("PONG", json.dumps({'name': self.name}))
     except KeyboardInterrupt:
         return
Ejemplo n.º 5
0
 def send_to_peer(self, peer_addr: str, message_type: str, data: str):
     peer = PeerConnection(peer_addr)
     if message_type == "GETF":
         peer.temp_info = data
     peer.send(message_type, data)
     received_message_type, reply = peer.receive()
     self.handlers[received_message_type](peer, reply)
Ejemplo n.º 6
0
 def handle_query_file_list(self,
                            peer_conn: PeerConnection,
                            data: str = None):
     file_list = self.get_local_files()
     peer_conn.send(REPLYFILELIST, json.dumps(file_list))
Ejemplo n.º 7
0
 def handle_ping(self, peer_conn: PeerConnection, data: str = None):
     logger.debug('Received Ping from {0}'.format(peer_conn.peer_addr))
     peer_conn.send(PONG, '')