import player_protocol_slave
import player_presentation_utils


class OOPlayerProtocolSlave(player_protocol_slave.PlayerProtocolSlave):

    def __init__(self, logger, identity):
        player_protocol_slave.PlayerProtocolSlave.__init__(self, logger)
        self.identity = identity
        self._cleanups = []
        self.log = logger.log

    @player_presentation_utils.log_method
    def add_cleanup(self, callback):
        self._cleanups.append(callback)

    @player_presentation_utils.log_method
    def handle_close(self):
        for callback in self._cleanups:
            callback()
        player_protocol_slave.PlayerProtocolSlave.handle_close(self)

    @player_presentation_utils.log_method
    def handle_error(self):
        for callback in self._cleanups:
            callback()
        player_protocol_slave.PlayerProtocolSlave.handle_error(self)

