class Message(object):

    '''A chat message.
    
    Encapsulated within a Packet.'''
    
    type=0
    
    def __init__(self, nick=None, message=None, data=None):
        self.nick = nick
        self.message = message
        if data:
            self.data = data
         
    def __repr__(self):
        return 'Message(%r, %r)'%(self.nick, self.message)
    
    def __eq__(self, other):
        return self.nick == other.nick and self.message == other.message
    
    # Properties
    def get_data(self):
        '''Encode self.'''
        return '%s\0%s\0'%(self.nick, self.message)
        
    def set_data(self, data):
        '''Decode data, storing the result in self.'''
        try:
            self.nick, self.message, ignore=str(data).split('\0')
        except ValueError:
            if '\0' not in data:
                raise ValueError('Argument \'bin\' is not in the correct format (bin: %r)'%bin)
            else:
                raise
    data=property(get_data, set_data)
