Exemplo n.º 1
0
 def handle_content(self, faceid: int, packet: Content,
                    request_entry: RequestTableEntry, cl_content: bool,
                    to_lower: multiprocessing.Queue,
                    to_higher: multiprocessing.Queue):
     """Handle incoming content"""
     self._request_table.remove(request_entry)
     if request_entry.chunked is False:  # Not chunked content
         if not packet.get_bytes().startswith(b'mdo:'):
             to_higher.put([faceid, packet])
             return
         else:  # Received metadata data --> chunked content
             request_entry.chunked = True
     if packet.get_bytes().startswith(
             b'mdo:'):  # Request all frames from metadata
         self.handle_received_meta_data(faceid, packet, request_entry,
                                        to_lower, cl_content)
     else:
         self.handle_received_chunk_data(faceid, packet, request_entry,
                                         to_higher)
Exemplo n.º 2
0
 def save_if_longest(self, packet: Content, ca_entry: CaEntry):
     """
     Check if the received ca content is longer than the existing one and if so, replace it.
     In the case where both neighbours have chunks available, we want to send the interests only to the one
     which has more.
     """
     if packet.get_bytes().startswith(
             b'mdo:'):  # Content is metadata, read size from metadata
         _, _, content_size = self.chunkifyer.parse_meta_data(
             packet.content)
     else:  # Content is string, size equals length of the string
         content_size = (len(packet.content))
     content_size = int(content_size)
     if content_size > ca_entry.size:
         ca_entry.ca = packet
         ca_entry.size = content_size