docs: def _handle_port_request(self, client_data, writer):
          """Given a port request body, parse it and respond appropriately.
  
          Args:
            client_data: The request bytes from the client.
            writer: The asyncio Writer for the response to be written to.
          """
          try:
              pid = int(client_data)
          except ValueError as error:
              self._client_request_errors += 1
              log.warning('Could not parse request: %s', error)
              return
  
          log.info('Request on behalf of pid %d.', pid)
          log.info('cmdline: %s', _get_process_command_line(pid))
  
          if not _should_allocate_port(pid):
              self._denied_allocations += 1
              return
  
          port = self._port_pool.get_port_for_process(pid)
          if port > 0:
              self._total_allocations += 1
              writer.write('{:d}\n'.format(port).encode('utf-8'))
              log.debug('Allocated port %d to pid %d', port, pid)
          else:
              self._denied_allocations += 1