<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def start(self):
 """ Starts the TCP server. :return: Method success. :rtype: bool """


        if self.__online:
            raise foundations.exceptions.ServerOperationError(
                "{0} | '{1}' TCP Server is already online!".format(self.__class__.__name__, self))

        try:
            self.__server = SocketServer.TCPServer((self.__address, self.__port), self.__handler)
            self.__worker = threading.Thread(target=self.__server.serve_forever)
            self.__worker.setDaemon(True)
            self.__worker.start()
            self.__online = True
            LOGGER.info(
                "{0} | TCP Server successfully started with '{1}' address on '{2}' port using '{3}' requests handler!".format(
                    self.__class__.__name__, self.__address, self.__port, self.__handler.__name__))
            return True
        except socket.error as error:
            if error.errno in (errno.EADDRINUSE, errno.EADDRNOTAVAIL):
                LOGGER.warning(
                    "!> {0} | Cannot start TCP Server, address is already in use on port '{1}'!".format(
                        self.__class__.__name__, self.__port))
            else:
                raise error