def notify(self, cuuid, event_data):
<EOL>euuid = str(uuid.uuid1())<EOL>if "<STR_LIT>" in self.registry[cuuid]:<EOL><INDENT>client_key = self.registry[cuuid]["<STR_LIT>"]<EOL><DEDENT>else:<EOL><INDENT>client_key = None<EOL><DEDENT>logger.debug("<STR_LIT>"<EOL>"<STR_LIT:%s>" % (str(cuuid), str(euuid), pformat(event_data)))<EOL>try:<EOL><INDENT>ip_address = self.registry[cuuid]["<STR_LIT:host>"]<EOL><DEDENT>except KeyError:<EOL><INDENT>logger.warning("<STR_LIT>"<EOL>"<STR_LIT>" % (str(cuuid), str(euuid)))<EOL>return False<EOL><DEDENT>try:<EOL><INDENT>port = self.registry[cuuid]["<STR_LIT:port>"]<EOL><DEDENT>except KeyError:<EOL><INDENT>logger.warning("<STR_LIT>"<EOL>"<STR_LIT>" % (str(cuuid), str(euuid)))<EOL>return False<EOL><DEDENT>packet = serialize_data({"<STR_LIT>": "<STR_LIT>",<EOL>"<STR_LIT>": event_data,<EOL>"<STR_LIT>": euuid},<EOL>self.compression,<EOL>self.encryption, client_key)<EOL>address = (ip_address, port)<EOL>self.event_uuids[euuid] = <NUM_LIT:0> <EOL>logger.debug("<STR_LIT>"<EOL>"<STR_LIT:%s>" % (cuuid, pformat(self.event_uuids)))<EOL>logger.debug("<STR_LIT>" % cuuid)<EOL>logger.debug("<STR_LIT>" % (cuuid, euuid))<EOL>logger.debug("<STR_LIT>" % (cuuid, pformat(event_data)))<EOL>self.listener.send_datagram(packet, address)<EOL>self.listener.call_later(self.timeout, self.retransmit,<EOL>{"<STR_LIT>": euuid,<EOL>"<STR_LIT>": packet,<EOL>"<STR_LIT>": cuuid})<EOL>
This function will send a NOTIFY event to a registered client.

        NOTIFY messages are nearly identical to EVENT messages, except that
        NOTIFY messages are always sent from server -> client. EVENT messages
        are always sent from client -> server. In addition to this difference,
        NOTIFY messages are not processed by a middleware to determine if
        they are legal or not, since all messages from the server should be
        considered LEGAL.

        Args:
          cuuid (string): The client uuid to send the event data to.
          event_data (any): The event data that we will be sending to the
            client.

        Returns:
          None