docs: def register(self, address, retry=True):
          """This function will send a register packet to the discovered Neteria
          server.
  
          Args:
            address (tuple): A tuple of the (address, port) to send the register
              request to.
            retry (boolean): Whether or not we want to reset the current number
              of registration retries to 0.
  
          Returns:
            None
  
          Examples:
            >>> address
            ('192.168.0.20', 40080)
  
          """
  
          logger.debug("<%s> Sending REGISTER request to: %s" % (str(self.cuuid),
                                                                  str(address)))
          if not self.listener.listening:
              logger.warning("Neteria client is not listening.")
  
          # Construct the message to send
          message = {"method": "REGISTER", "cuuid": str(self.cuuid)}
  
          # If we have encryption enabled, send our public key with our REGISTER
          # request
          if self.encryption:
              message["encryption"] = [self.encryption.n, self.encryption.e]
  
          # Send a REGISTER to the server
          self.listener.send_datagram(
              serialize_data(message, self.compression,
                             encryption=False), address)
  
          if retry:
              # Reset the current number of REGISTER retries
              self.register_retries = 0
  
          # Schedule a task to run in x seconds to check to see if we've timed
          # out in receiving a response from the server
          self.listener.call_later(
              self.timeout, self.retransmit, {"method": "REGISTER",
                                              "address": address})