def advertise_endpoint(self, endpoint_description):
        """
        Advertise and endpoint_description for remote discovery.
        If it hasn't already been a endpoint_description will be advertised via
        a some protocol.

        :param endpoint_description: an instance of EndpointDescription to
        advertise. Must not be None.
        :return: True if advertised, False if not
        (e.g. it's already been advertised)
        """
        endpoint_id = endpoint_description.get_id()
        with self._published_endpoints_lock:
            if self.get_advertised_endpoint(endpoint_id) is not None:
                return False

            advertise_result = self._advertise(endpoint_description)
            if advertise_result:
                self._add_advertised(endpoint_description, advertise_result)
                return True

            return False