@staticmethod
def parse(wmsg):
    '\n      Verifies and parses an unserialized raw message into an actual WAMP message instance.\n\n      :param wmsg: The unserialized raw message.\n      :type wmsg: list\n\n      :returns: An instance of this class.\n      '
    assert ((len(wmsg) > 0) and (wmsg[0] == Goodbye.MESSAGE_TYPE))
    if (len(wmsg) != 3):
        raise ProtocolError('invalid message length {0} for GOODBYE'.format(len(wmsg)))
    details = check_or_raise_extra(wmsg[1], "'details' in GOODBYE")
    reason = check_or_raise_uri(wmsg[2], "'reason' in GOODBYE")
    message = None
    if (u'message' in details):
        details_message = details[u'message']
        if (type(details_message) != six.text_type):
            raise ProtocolError("invalid type {0} for 'message' detail in GOODBYE".format(type(details_message)))
        message = details_message
    obj = Goodbye(reason, message)
    return obj
Verifies and parses an unserialized raw message into an actual WAMP message instance.

:param wmsg: The unserialized raw message.
:type wmsg: list

:returns: An instance of this class.
@staticmethod
def parse(wmsg):
    '\n      Verifies and parses an unserialized raw message into an actual WAMP message instance.\n\n      :param wmsg: The unserialized raw message.\n      :type wmsg: list\n\n      :returns: An instance of this class.\n      '
    assert ((len(wmsg) > 0) and (wmsg[0] == Goodbye.MESSAGE_TYPE))
    if (len(wmsg) != 3):
        raise ProtocolError('invalid message length {0} for GOODBYE'.format(len(wmsg)))
    details = check_or_raise_extra(wmsg[1], "'details' in GOODBYE")
    reason = check_or_raise_uri(wmsg[2], "'reason' in GOODBYE")
    message = None
    if (u'message' in details):
        details_message = details[u'message']
        if (type(details_message) != six.text_type):
            raise ProtocolError("invalid type {0} for 'message' detail in GOODBYE".format(type(details_message)))
        message = details_message
    obj = Goodbye(reason, message)
    return obj