def handle_message(self, response, ignore_subscribe_messages=False):
        """
        Parses a pub/sub message. If the channel or pattern was subscribed to
        with a message handler, the handler is invoked instead of a parsed
        message being returned.
        """
        message_type = nativestr(response[0])
        if message_type == 'pmessage':
            message = {
                'type': message_type,
                'pattern': response[1],
                'channel': response[2],
                'data': response[3]
            }
        else:
            message = {
                'type': message_type,
                'pattern': None,
                'channel': response[1],
                'data': response[2]
            }

        # if this is an unsubscribe message, remove it from memory
        if message_type in self.UNSUBSCRIBE_MESSAGE_TYPES:
            subscribed_dict = None
            if message_type == 'punsubscribe':
                subscribed_dict = self.patterns
            else:
                subscribed_dict = self.channels
            try:
                del subscribed_dict[message['channel']]
            except KeyError:
                pass

        if message_type in self.PUBLISH_MESSAGE_TYPES:
            # if there's a message handler, invoke it
            handler = None
            if message_type == 'pmessage':
                handler = self.patterns.get(message['pattern'], None)
            else:
                handler = self.channels.get(message['channel'], None)
            if handler:
                handler(message)
                return None
        else:
            # this is a subscribe/unsubscribe message. ignore if we don't
            # want them
            if ignore_subscribe_messages or self.ignore_subscribe_messages:
                return None

        return message
def handle_message ( self , response , ignore_subscribe_messages = False ) : message_type = nativestr ( response [ 0 ] ) if message_type == 'pmessage' : message = { 'type' : message_type , 'pattern' : response [ 1 ] , 'channel' : response [ 2 ] , 'data' : response [ 3 ] } else : message = { 'type' : message_type , 'pattern' : None , 'channel' : response [ 1 ] , 'data' : response [ 2 ] } if message_type in self . UNSUBSCRIBE_MESSAGE_TYPES : subscribed_dict = None if message_type == 'punsubscribe' : subscribed_dict = self . patterns else : subscribed_dict = self . channels try : del subscribed_dict [ message [ 'channel' ] ] except KeyError : pass if message_type in self . PUBLISH_MESSAGE_TYPES : handler = None if message_type == 'pmessage' : handler = self . patterns . get ( message [ 'pattern' ] , None ) else : handler = self . channels . get ( message [ 'channel' ] , None ) if handler : handler ( message ) return None else : if ignore_subscribe_messages or self . ignore_subscribe_messages : return None return message
Parses a pub/sub message. If the channel or pattern was subscribed to
        with a message handler, the handler is invoked instead of a parsed
        message being returned.