예제 #1
0
파일: messages.py 프로젝트: pypingyi/mixer
def _decode_soas(buffer: bytes, index: int) -> Tuple[List[Soa], int]:
    path: List[Union[int, str]] = ["unknown"]
    name = "unknown"
    soas: List[Soa] = []
    try:
        # see soa_buffers()
        aos_count, index = decode_int(buffer, index)
        for _ in range(aos_count):
            path_string, index = decode_string(buffer, index)
            path = json.loads(path_string)

            logger.info("%s: %s ", "build_soa", path)

            element_count, index = decode_int(buffer, index)
            members = []
            for _ in range(element_count):
                name, index = decode_string(buffer, index)
                array_, index = decode_py_array(buffer, index)
                members.append((name, array_), )
            soas.append(Soa(path, members), )
    except Exception:
        logger.error(f"Exception while decoding for {path} {name}")
        for line in traceback.format_exc().splitlines():
            logger.error(line)
        logger.error("ignored")
        return []

    return soas, index
예제 #2
0
파일: messages.py 프로젝트: pypingyi/mixer
def decode_arrays(buffer: bytes, index) -> Tuple[ArrayGroups, int]:
    array_group_count, index = decode_int(buffer, index)
    if array_group_count == 0:
        return {}, index

    array_groups: ArrayGroups = {}
    for _groups_index in range(array_group_count):
        array_group_name, index = decode_string(buffer, index)
        array_group_length, index = decode_int(buffer, index)
        array_group: ArrayGroup = []
        for _array_index in range(array_group_length):
            key_string, index = decode_string(buffer, index)
            key = json.loads(key_string)
            array_, index = decode_py_array(buffer, index)
            array_group.append((key, array_), )
        array_groups[array_group_name] = array_group

    return array_groups, index
예제 #3
0
파일: data.py 프로젝트: OpenWRLD/mixer
def _decode_and_build_soas(uuid: Uuid, buffer: bytes, index: int):
    path: List[Union[int, str]] = ["unknown"]
    name = "unknown"
    try:
        # see soa_buffers()
        aos_count, index = decode_int(buffer, index)
        for _ in range(aos_count):
            path_string, index = decode_string(buffer, index)
            path = json.loads(path_string)

            logger.info("%s: %s %s", "build_soa", uuid, path)

            element_count, index = decode_int(buffer, index)
            soas = []
            for _ in range(element_count):
                name, index = decode_string(buffer, index)
                array, index = decode_py_array(buffer, index)
                soas.append((name, array))
            share_data.bpy_data_proxy.update_soa(uuid, path, soas)
    except Exception:
        logger.error(f"Exception during build_soa for {uuid} {path} {name}")
        for line in traceback.format_exc().splitlines():
            logger.error(line)
        logger.error("ignored")