''

def onWatcherMsg(self, streamReader):

    type = streamReader.readUint8()
    _d = {'type': type, 'path': '', 'values': {}, 'keys': []}
    if (type == 0):
        while (not streamReader.EOF()):
            path = streamReader.readString()
            name = streamReader.readString()
            id = streamReader.readUint16()
            wtype = streamReader.readUint8()
            fullpath = ('%s%s%s' % (path, (((len(path) > 0) and '/') or ''), name))
            if (wtype == WATCHER_VALUE_TYPE_UINT8):
                val = streamReader.readUint8()
            elif (wtype == WATCHER_VALUE_TYPE_UINT16):
                val = streamReader.readUint16()
            elif (wtype == WATCHER_VALUE_TYPE_UINT32):
                val = streamReader.readUint32()
            elif (wtype == WATCHER_VALUE_TYPE_UINT64):
                val = streamReader.readUint64()
            elif (wtype == WATCHER_VALUE_TYPE_INT8):
                val = streamReader.readInt8()
            elif (wtype == WATCHER_VALUE_TYPE_INT16):
                val = streamReader.readInt16()
            elif (wtype == WATCHER_VALUE_TYPE_INT32):
                val = streamReader.readInt32()
            elif (wtype == WATCHER_VALUE_TYPE_INT64):
                val = streamReader.readInt64()
            elif (wtype == WATCHER_VALUE_TYPE_FLOAT):
                val = streamReader.readFloat()
            elif (wtype == WATCHER_VALUE_TYPE_DOUBLE):
                val = streamReader.readDouble()
            elif (wtype == WATCHER_VALUE_TYPE_CHAR):
                val = streamReader.read(1).decode()
            elif (wtype == WATCHER_VALUE_TYPE_STRING):
                val = streamReader.readString()
            elif (wtype == WATCHER_VALUE_TYPE_BOOL):
                val = streamReader.readBool()
            elif (wtype == WATCHER_VALUE_TYPE_COMPONENT_TYPE):
                val = streamReader.readInt32()
            else:
                assert False, 'not    support!'
            _d['path'] = path
            _d['values'][name] = val
    else:
        rootpath = streamReader.readString()
        if (rootpath == '/'):
            rootpath = ''
        if rootpath:
            _d['path'] = rootpath
        while (not streamReader.EOF()):
            path = streamReader.readString()
            _d['keys'].append(path)
    self.watchData.append(_d)
