'A remote message has been received.  Dispatch it appropriately.
The default implementation is to dispatch to a method called
\'C{view_messagename}\' to my Object and call it on my object with
the same arguments, modified by inserting my Perspective as
the first argument.'

def remoteMessageReceived(self, broker, message, args, kw):

    args = broker.unserialize(args, self.perspective)
    kw = broker.unserialize(kw, self.perspective)
    if (not isinstance(message, str)):
        message = message.decode('utf8')
    method = getattr(self.object, ('view_%s' % message))
    try:
        state = method(*((self.perspective,) + args), **kw)
    except TypeError:
        log.msg(("%s    didn't    accept    %s    and    %s" % (method, args, kw)))
        raise
    rv = broker.serialize(state, self.perspective, method, args, kw)
    return rv
