45 std::vector<std::string> name_cache =
Split(
uri,
'#');
47 if (name_cache.size() == 2) {
48 std::ostringstream os;
51 os <<
".split" << num_parts <<
".part" << part_index;
53 this->cache_file = os.str();
55 CHECK_EQ(name_cache.size(), 1U)
56 <<
"only one `#` is allowed in file path for cachefile specification";
58 std::vector<std::string> name_args =
Split(name_cache[0],
'?');
59 if (name_args.size() == 2) {
60 std::vector<std::string> arg_list =
Split(name_args[1],
'&');
61 for (
size_t i = 0; i < arg_list.size(); ++i) {
62 std::istringstream is(arg_list[i]);
63 std::pair<std::string, std::string> kv;
64 CHECK(std::getline(is, kv.first,
'=')) <<
"Invalid uri argument format"
65 <<
" for key in arg " << i + 1;
66 CHECK(std::getline(is, kv.second)) <<
"Invalid uri argument format"
67 <<
" for value in arg " << i + 1;
68 this->args.insert(kv);
71 CHECK_EQ(name_args.size(), 1U)
72 <<
"only one `#` is allowed in file path for cachefile specification";
74 this->uri = name_args[0];