int ResumableUploader::loadRecord()

in sdk/src/resumable/ResumableUploader.cc [480:519]


int ResumableUploader::loadRecord()
{
    auto recordStream = GetFstreamByPath(recordPath_, recordPathW_, std::ios::in);
    if (recordStream->is_open()){
        Json::Value root;
        Json::CharReaderBuilder rbuilder;
        std::string errMsg;
        if (!Json::parseFromStream(rbuilder, *recordStream, &root, &errMsg))
        {
            return ARG_ERROR_PARSE_UPLOAD_RECORD_FILE;
        }

        record_.opType = root["opType"].asString();
        record_.driveID = root["driveID"].asString();
        record_.fileID = root["fileID"].asString();
        record_.uploadID = root["uploadID"].asString();
        record_.name = root["name"].asString();
        record_.filePath = root["filePath"].asString();
        record_.taskID = root["taskID"].asString();
        record_.size = root["size"].asUInt64();
        record_.mtime = root["mtime"].asString();
        record_.partSize = root["partSize"].asUInt64();

        UploadPartRecord part;
        for (uint32_t i = 0; i < root["parts"].size(); i++) {
            Json::Value partValue = root["parts"][i];
            part.partNumber = partValue["partNumber"].asInt();
            part.size = partValue["size"].asInt64();
            part.crc64 = partValue["crc64"].asUInt64();
            record_.parts.push_back(part);
        }
        record_.md5Sum = root["md5Sum"].asString();

        partSize_ = record_.partSize;
        hasRecord_ = true;
        recordStream->close();
    }

    return 0;
}