<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def setup_communication_daemon(self):
 # pylint: disable=no-member """ Setup HTTP server daemon to listen for incoming HTTP requests from other Alignak daemons :return: True if initialization is ok, else False """

        ca_cert = ssl_cert = ssl_key = server_dh = None

        # The SSL part
        if self.use_ssl:
            ssl_cert = os.path.abspath(self.server_cert)
            if not os.path.exists(ssl_cert):
                self.exit_on_error("The configured SSL server certificate file '%s' "
                                   "does not exist." % ssl_cert, exit_code=2)
            logger.info("Using SSL server certificate: %s", ssl_cert)

            ssl_key = os.path.abspath(self.server_key)
            if not os.path.exists(ssl_key):
                self.exit_on_error("The configured SSL server key file '%s' "
                                   "does not exist." % ssl_key, exit_code=2)
            logger.info("Using SSL server key: %s", ssl_key)

            if self.server_dh:
                server_dh = os.path.abspath(self.server_dh)
                logger.info("Using ssl dh cert file: %s", server_dh)
                self.exit_on_error("Sorry, but using a DH configuration "
                                   "is not currently supported!", exit_code=2)

            if self.ca_cert:
                ca_cert = os.path.abspath(self.ca_cert)
                logger.info("Using ssl ca cert file: %s", ca_cert)

            if self.hard_ssl_name_check:
                logger.info("Enabling hard SSL server name verification")

        # Let's create the HTTPDaemon, it will be started later
        # pylint: disable=E1101
        try:
            logger.info('Setting up HTTP daemon (%s:%d), %d threads',
                        self.host, self.port, self.thread_pool_size)
            self.http_daemon = HTTPDaemon(self.host, self.port, self.http_interface,
                                          self.use_ssl, ca_cert, ssl_key,
                                          ssl_cert, server_dh, self.thread_pool_size,
                                          self.log_cherrypy, self.favicon)
        except PortNotFree:
            logger.error('The HTTP daemon port (%s:%d) is not free...', self.host, self.port)
            return False

        except Exception as exp:  # pylint: disable=broad-except
            print('Setting up HTTP daemon, exception: %s', str(exp))
            logger.exception('Setting up HTTP daemon, exception: %s', str(exp))
            return False

        return True