refactor: add tr_variant::unmanaged_string(tr_quark) (#7906)

* feat: add tr_variant::unmanaged_string(tr_quark)

* refactor: use tr_variant::unmanaged_string(tr_quark)
This commit is contained in:
Charles Kerr
2025-12-09 14:58:15 -06:00
committed by GitHub
parent 20161fa044
commit fece4137c7
4 changed files with 77 additions and 61 deletions

View File

@@ -272,6 +272,11 @@ public:
return ret; return ret;
} }
[[nodiscard]] static tr_variant unmanaged_string(tr_quark const key)
{
return unmanaged_string(tr_quark_get_string_view(key));
}
template<typename Val> template<typename Val>
tr_variant& operator=(Val value) tr_variant& operator=(Val value)
{ {

View File

@@ -99,7 +99,7 @@ TEST_F(RpcTest, JsonRpcWrongVersion)
{ {
auto request_map = tr_variant::Map{ 3U }; auto request_map = tr_variant::Map{ 3U };
request_map.try_emplace(TR_KEY_jsonrpc, "1.0"); request_map.try_emplace(TR_KEY_jsonrpc, "1.0");
request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_session_stats))); request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_stats));
request_map.try_emplace(TR_KEY_id, 12345); request_map.try_emplace(TR_KEY_id, 12345);
auto response = tr_variant{}; auto response = tr_variant{};
@@ -141,9 +141,7 @@ TEST_F(RpcTest, idSync)
{ {
auto request_map = tr_variant::Map{ 3U }; auto request_map = tr_variant::Map{ 3U };
request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version); request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request_map.try_emplace( request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_stats_kebab));
TR_KEY_method,
tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_session_stats_kebab)));
request_map[TR_KEY_id].merge(request_id); // copy request_map[TR_KEY_id].merge(request_id); // copy
auto response = tr_variant{}; auto response = tr_variant{};
@@ -189,7 +187,7 @@ TEST_F(RpcTest, idWrongType)
{ {
auto request_map = tr_variant::Map{ 3U }; auto request_map = tr_variant::Map{ 3U };
request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version); request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_session_stats))); request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_stats));
request_map[TR_KEY_id].merge(request_id); // copy request_map[TR_KEY_id].merge(request_id); // copy
auto response = tr_variant{}; auto response = tr_variant{};
@@ -223,7 +221,7 @@ TEST_F(RpcTest, idWrongType)
TEST_F(RpcTest, tagSyncLegacy) TEST_F(RpcTest, tagSyncLegacy)
{ {
auto request_map = tr_variant::Map{ 2U }; auto request_map = tr_variant::Map{ 2U };
request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_session_stats))); request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_stats));
request_map.try_emplace(TR_KEY_tag, 12345); request_map.try_emplace(TR_KEY_tag, 12345);
auto response = tr_variant{}; auto response = tr_variant{};
@@ -257,9 +255,7 @@ TEST_F(RpcTest, idAsync)
auto request_map = tr_variant::Map{ 3U }; auto request_map = tr_variant::Map{ 3U };
request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version); request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request_map.try_emplace( request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_torrent_rename_path_kebab));
TR_KEY_method,
tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_torrent_rename_path_kebab)));
request_map[TR_KEY_id].merge(request_id); // copy request_map[TR_KEY_id].merge(request_id); // copy
auto params_map = tr_variant::Map{ 2U }; auto params_map = tr_variant::Map{ 2U };
@@ -310,7 +306,7 @@ TEST_F(RpcTest, tagAsyncLegacy)
EXPECT_NE(nullptr, tor); EXPECT_NE(nullptr, tor);
auto request_map = tr_variant::Map{ 3U }; auto request_map = tr_variant::Map{ 3U };
request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_torrent_rename_path))); request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_torrent_rename_path));
request_map.try_emplace(TR_KEY_tag, 12345); request_map.try_emplace(TR_KEY_tag, 12345);
auto arguments_map = tr_variant::Map{ 2U }; auto arguments_map = tr_variant::Map{ 2U };
@@ -343,7 +339,7 @@ TEST_F(RpcTest, NotificationSync)
{ {
auto request_map = tr_variant::Map{ 2U }; auto request_map = tr_variant::Map{ 2U };
request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version); request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_session_stats))); request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_stats));
auto response = tr_variant{}; auto response = tr_variant{};
tr_rpc_request_exec( tr_rpc_request_exec(
@@ -361,7 +357,7 @@ TEST_F(RpcTest, NotificationAsync)
auto request_map = tr_variant::Map{ 2U }; auto request_map = tr_variant::Map{ 2U };
request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version); request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_torrent_rename_path))); request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_torrent_rename_path));
auto params_map = tr_variant::Map{ 2U }; auto params_map = tr_variant::Map{ 2U };
params_map.try_emplace(TR_KEY_path, "files-filled-with-zeroes/512"); params_map.try_emplace(TR_KEY_path, "files-filled-with-zeroes/512");
@@ -444,18 +440,18 @@ TEST_F(RpcTest, batch)
auto request = tr_variant::Map{ 3U }; auto request = tr_variant::Map{ 3U };
request.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version); request.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_session_stats_kebab))); request.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_stats_kebab));
request.try_emplace(TR_KEY_id, 12345); request.try_emplace(TR_KEY_id, 12345);
request_vec.emplace_back(std::move(request)); request_vec.emplace_back(std::move(request));
request = tr_variant::Map{ 2U }; request = tr_variant::Map{ 2U };
request.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version); request.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_session_set_kebab))); request.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_set_kebab));
request_vec.emplace_back(std::move(request)); request_vec.emplace_back(std::move(request));
request = tr_variant::Map{ 3U }; request = tr_variant::Map{ 3U };
request.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version); request.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_session_stats_kebab))); request.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_stats_kebab));
request.try_emplace(TR_KEY_id, "12345"sv); request.try_emplace(TR_KEY_id, "12345"sv);
request_vec.emplace_back(std::move(request)); request_vec.emplace_back(std::move(request));
@@ -477,7 +473,7 @@ TEST_F(RpcTest, batch)
request_vec.emplace_back(std::move(request)); request_vec.emplace_back(std::move(request));
request = tr_variant::Map{ 2U }; request = tr_variant::Map{ 2U };
request.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_session_stats_kebab))); request.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_stats_kebab));
request.try_emplace(TR_KEY_tag, 12345); request.try_emplace(TR_KEY_tag, 12345);
request_vec.emplace_back(std::move(request)); request_vec.emplace_back(std::move(request));
@@ -596,7 +592,7 @@ TEST_F(RpcTest, sessionGet)
auto request_map = tr_variant::Map{ 3U }; auto request_map = tr_variant::Map{ 3U };
request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version); request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_session_get))); request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_get));
request_map.try_emplace(TR_KEY_id, 12345); request_map.try_emplace(TR_KEY_id, 12345);
auto response = tr_variant{}; auto response = tr_variant{};
tr_rpc_request_exec( tr_rpc_request_exec(
@@ -768,7 +764,7 @@ TEST_F(RpcTest, torrentGet)
auto request = tr_variant::Map{ 3U }; auto request = tr_variant::Map{ 3U };
request.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version); request.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_torrent_get))); request.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_torrent_get));
request.try_emplace(TR_KEY_id, 12345); request.try_emplace(TR_KEY_id, 12345);
auto params = tr_variant::Map{ 1U }; auto params = tr_variant::Map{ 1U };

View File

@@ -24,7 +24,11 @@
using namespace std::literals; using namespace std::literals;
using VariantTest = ::testing::Test; class VariantTest : public ::testing::Test
{
protected:
static void expectVariantMatchesQuark(tr_quark key);
};
#ifndef _WIN32 #ifndef _WIN32
#define STACK_SMASH_DEPTH (1 * 1000 * 1000) #define STACK_SMASH_DEPTH (1 * 1000 * 1000)
@@ -82,6 +86,35 @@ TEST_F(VariantTest, getType)
EXPECT_EQ(strkey, *sv); EXPECT_EQ(strkey, *sv);
} }
// static
void VariantTest::expectVariantMatchesQuark(tr_quark const key)
{
auto const key_sv = tr_quark_get_string_view(key);
auto const var = tr_variant::unmanaged_string(key);
auto const var_sv = var.value_if<std::string_view>();
ASSERT_TRUE(var_sv);
// The strings should not just be equal,
// but should point to literally the same memory
EXPECT_EQ(key_sv, *var_sv);
EXPECT_EQ(std::data(key_sv), std::data(*var_sv));
}
TEST_F(VariantTest, unmanagedStringFromPredefinedQuark)
{
expectVariantMatchesQuark(TR_KEY_name);
}
TEST_F(VariantTest, unmanagedStringFromNewQuark)
{
static auto constexpr NewString = std::string_view{ "this-string-is-not-already-interned" };
ASSERT_FALSE(tr_quark_lookup(NewString));
auto const key = tr_quark_new(NewString);
expectVariantMatchesQuark(key);
}
TEST_F(VariantTest, parseInt) TEST_F(VariantTest, parseInt)
{ {
static auto constexpr Benc = "i64e"sv; static auto constexpr Benc = "i64e"sv;

View File

@@ -2525,7 +2525,7 @@ tr_variant::Map& ensure_sset(tr_variant& sset)
{ {
sset = tr_variant::Map{ 3 }; sset = tr_variant::Map{ 3 };
map = sset.get_if<tr_variant::Map>(); map = sset.get_if<tr_variant::Map>();
map->try_emplace(TR_KEY_method, tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_session_set_kebab))); map->try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_set_kebab));
} }
auto* args = map->find_if<tr_variant::Map>(TR_KEY_arguments); auto* args = map->find_if<tr_variant::Map>(TR_KEY_arguments);
@@ -2543,7 +2543,7 @@ tr_variant::Map& ensure_tset(tr_variant& tset)
{ {
tset = tr_variant::Map{ 3 }; tset = tr_variant::Map{ 3 };
map = tset.get_if<tr_variant::Map>(); map = tset.get_if<tr_variant::Map>();
map->try_emplace(TR_KEY_method, tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_torrent_set_kebab))); map->try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_torrent_set_kebab));
} }
auto* args = map->find_if<tr_variant::Map>(TR_KEY_arguments); auto* args = map->find_if<tr_variant::Map>(TR_KEY_arguments);
@@ -2561,7 +2561,7 @@ tr_variant::Map& ensure_tadd(tr_variant& tadd)
{ {
tadd = tr_variant::Map{ 3 }; tadd = tr_variant::Map{ 3 };
map = tadd.get_if<tr_variant::Map>(); map = tadd.get_if<tr_variant::Map>();
map->try_emplace(TR_KEY_method, tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_torrent_add_kebab))); map->try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_torrent_add_kebab));
map->try_emplace(TR_KEY_tag, TAG_TORRENT_ADD); map->try_emplace(TR_KEY_tag, TAG_TORRENT_ADD);
} }
@@ -2745,7 +2745,7 @@ int process_args(char const* rpcurl, int argc, char const* const* argv, RemoteCo
for (auto const& key : DetailsKeys) for (auto const& key : DetailsKeys)
{ {
fields.emplace_back(tr_variant::unmanaged_string(tr_quark_get_string_view(key))); fields.emplace_back(tr_variant::unmanaged_string(key));
} }
add_id_arg(args, config, "all"); add_id_arg(args, config, "all");
@@ -2755,7 +2755,7 @@ int process_args(char const* rpcurl, int argc, char const* const* argv, RemoteCo
for (auto const& key : DetailsKeys) for (auto const& key : DetailsKeys)
{ {
fields.emplace_back(tr_variant::unmanaged_string(tr_quark_get_string_view(key))); fields.emplace_back(tr_variant::unmanaged_string(key));
} }
add_id_arg(args, config); add_id_arg(args, config);
@@ -2766,7 +2766,7 @@ int process_args(char const* rpcurl, int argc, char const* const* argv, RemoteCo
for (auto const& key : ListKeys) for (auto const& key : ListKeys)
{ {
fields.emplace_back(tr_variant::unmanaged_string(tr_quark_get_string_view(key))); fields.emplace_back(tr_variant::unmanaged_string(key));
} }
add_id_arg(args, config, "all"); add_id_arg(args, config, "all");
@@ -2777,7 +2777,7 @@ int process_args(char const* rpcurl, int argc, char const* const* argv, RemoteCo
for (auto const& key : FilesKeys) for (auto const& key : FilesKeys)
{ {
fields.emplace_back(tr_variant::unmanaged_string(tr_quark_get_string_view(key))); fields.emplace_back(tr_variant::unmanaged_string(key));
} }
add_id_arg(args, config); add_id_arg(args, config);
@@ -2785,20 +2785,20 @@ int process_args(char const* rpcurl, int argc, char const* const* argv, RemoteCo
case 941: case 941:
map.insert_or_assign(TR_KEY_tag, TAG_PEERS); map.insert_or_assign(TR_KEY_tag, TAG_PEERS);
fields.emplace_back(tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_peers))); fields.emplace_back(tr_variant::unmanaged_string(TR_KEY_peers));
add_id_arg(args, config); add_id_arg(args, config);
break; break;
case 942: case 942:
map.insert_or_assign(TR_KEY_tag, TAG_PIECES); map.insert_or_assign(TR_KEY_tag, TAG_PIECES);
fields.emplace_back(tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_pieces))); fields.emplace_back(tr_variant::unmanaged_string(TR_KEY_pieces));
fields.emplace_back(tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_piece_count_camel))); fields.emplace_back(tr_variant::unmanaged_string(TR_KEY_piece_count_camel));
add_id_arg(args, config); add_id_arg(args, config);
break; break;
case 943: case 943:
map.insert_or_assign(TR_KEY_tag, TAG_TRACKERS); map.insert_or_assign(TR_KEY_tag, TAG_TRACKERS);
fields.emplace_back(tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_tracker_stats_camel))); fields.emplace_back(tr_variant::unmanaged_string(TR_KEY_tracker_stats_camel));
add_id_arg(args, config); add_id_arg(args, config);
break; break;
@@ -2808,7 +2808,7 @@ int process_args(char const* rpcurl, int argc, char const* const* argv, RemoteCo
} }
args.insert_or_assign(TR_KEY_fields, std::move(fields)); args.insert_or_assign(TR_KEY_fields, std::move(fields));
fields.emplace_back(tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_torrent_get_kebab))); fields.emplace_back(tr_variant::unmanaged_string(TR_KEY_torrent_get_kebab));
map.insert_or_assign(TR_KEY_arguments, std::move(args)); map.insert_or_assign(TR_KEY_arguments, std::move(args));
auto top = tr_variant{ std::move(map) }; auto top = tr_variant{ std::move(map) };
status |= flush(rpcurl, &top, config); status |= flush(rpcurl, &top, config);
@@ -3240,7 +3240,7 @@ int process_args(char const* rpcurl, int argc, char const* const* argv, RemoteCo
args.try_emplace(TR_KEY_delete_local_data_kebab, c == 840); args.try_emplace(TR_KEY_delete_local_data_kebab, c == 840);
add_id_arg(args, config); add_id_arg(args, config);
map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_torrent_remove_kebab))); map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_torrent_remove_kebab));
map.try_emplace(TR_KEY_arguments, std::move(args)); map.try_emplace(TR_KEY_arguments, std::move(args));
auto top = tr_variant{ std::move(map) }; auto top = tr_variant{ std::move(map) };
@@ -3264,7 +3264,7 @@ int process_args(char const* rpcurl, int argc, char const* const* argv, RemoteCo
auto args = tr_variant::Map{ 1 }; auto args = tr_variant::Map{ 1 };
add_id_arg(args, config); add_id_arg(args, config);
auto const key = is_stop ? TR_KEY_torrent_stop_kebab : TR_KEY_torrent_start_kebab; auto const key = is_stop ? TR_KEY_torrent_stop_kebab : TR_KEY_torrent_start_kebab;
map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(tr_quark_get_string_view(key))); map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(key));
map.try_emplace(TR_KEY_arguments, std::move(args)); map.try_emplace(TR_KEY_arguments, std::move(args));
auto top = tr_variant{ std::move(map) }; auto top = tr_variant{ std::move(map) };
@@ -3302,7 +3302,7 @@ int process_args(char const* rpcurl, int argc, char const* const* argv, RemoteCo
auto args = tr_variant::Map{ 1 }; auto args = tr_variant::Map{ 1 };
add_id_arg(args, config); add_id_arg(args, config);
auto const key = Method(c); auto const key = Method(c);
map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(tr_quark_get_string_view(key))); map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(key));
map.try_emplace(TR_KEY_arguments, std::move(args)); map.try_emplace(TR_KEY_arguments, std::move(args));
auto top = tr_variant{ std::move(map) }; auto top = tr_variant{ std::move(map) };
status |= flush(rpcurl, &top, config); status |= flush(rpcurl, &top, config);
@@ -3314,9 +3314,7 @@ int process_args(char const* rpcurl, int argc, char const* const* argv, RemoteCo
case 920: /* session-info */ case 920: /* session-info */
{ {
auto map = tr_variant::Map{ 2 }; auto map = tr_variant::Map{ 2 };
map.try_emplace( map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_get_kebab));
TR_KEY_method,
tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_session_get_kebab)));
map.try_emplace(TR_KEY_tag, TAG_SESSION); map.try_emplace(TR_KEY_tag, TAG_SESSION);
auto top = tr_variant{ std::move(map) }; auto top = tr_variant{ std::move(map) };
@@ -3334,9 +3332,7 @@ int process_args(char const* rpcurl, int argc, char const* const* argv, RemoteCo
case 850: case 850:
{ {
auto map = tr_variant::Map{ 1 }; auto map = tr_variant::Map{ 1 };
map.try_emplace( map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_close_kebab));
TR_KEY_method,
tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_session_close_kebab)));
auto top = tr_variant{ std::move(map) }; auto top = tr_variant{ std::move(map) };
status |= flush(rpcurl, &top, config); status |= flush(rpcurl, &top, config);
} }
@@ -3345,9 +3341,7 @@ int process_args(char const* rpcurl, int argc, char const* const* argv, RemoteCo
case 963: case 963:
{ {
auto map = tr_variant::Map{ 1 }; auto map = tr_variant::Map{ 1 };
map.try_emplace( map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_blocklist_update_kebab));
TR_KEY_method,
tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_blocklist_update_kebab)));
auto top = tr_variant{ std::move(map) }; auto top = tr_variant{ std::move(map) };
status |= flush(rpcurl, &top, config); status |= flush(rpcurl, &top, config);
} }
@@ -3356,9 +3350,7 @@ int process_args(char const* rpcurl, int argc, char const* const* argv, RemoteCo
case 921: case 921:
{ {
auto map = tr_variant::Map{ 2 }; auto map = tr_variant::Map{ 2 };
map.try_emplace( map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_stats_kebab));
TR_KEY_method,
tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_session_stats_kebab)));
map.try_emplace(TR_KEY_tag, TAG_STATS); map.try_emplace(TR_KEY_tag, TAG_STATS);
auto top = tr_variant{ std::move(map) }; auto top = tr_variant{ std::move(map) };
status |= flush(rpcurl, &top, config); status |= flush(rpcurl, &top, config);
@@ -3368,9 +3360,7 @@ int process_args(char const* rpcurl, int argc, char const* const* argv, RemoteCo
case 962: case 962:
{ {
auto map = tr_variant::Map{ 2 }; auto map = tr_variant::Map{ 2 };
map.try_emplace( map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_port_test_kebab));
TR_KEY_method,
tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_port_test_kebab)));
map.try_emplace(TR_KEY_tag, TAG_PORTTEST); map.try_emplace(TR_KEY_tag, TAG_PORTTEST);
auto top = tr_variant{ std::move(map) }; auto top = tr_variant{ std::move(map) };
status |= flush(rpcurl, &top, config); status |= flush(rpcurl, &top, config);
@@ -3384,9 +3374,7 @@ int process_args(char const* rpcurl, int argc, char const* const* argv, RemoteCo
args.try_emplace(TR_KEY_location, optarg_sv); args.try_emplace(TR_KEY_location, optarg_sv);
args.try_emplace(TR_KEY_move, true); args.try_emplace(TR_KEY_move, true);
add_id_arg(args, config); add_id_arg(args, config);
map.try_emplace( map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_torrent_set_location_kebab));
TR_KEY_method,
tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_torrent_set_location_kebab)));
map.try_emplace(TR_KEY_arguments, std::move(args)); map.try_emplace(TR_KEY_arguments, std::move(args));
auto top = tr_variant{ std::move(map) }; auto top = tr_variant{ std::move(map) };
status |= flush(rpcurl, &top, config); status |= flush(rpcurl, &top, config);
@@ -3413,9 +3401,7 @@ int process_args(char const* rpcurl, int argc, char const* const* argv, RemoteCo
args.try_emplace(TR_KEY_location, optarg_sv); args.try_emplace(TR_KEY_location, optarg_sv);
args.try_emplace(TR_KEY_move, false); args.try_emplace(TR_KEY_move, false);
add_id_arg(args, config); add_id_arg(args, config);
map.try_emplace( map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_torrent_set_location_kebab));
TR_KEY_method,
tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_torrent_set_location_kebab)));
map.try_emplace(TR_KEY_arguments, std::move(args)); map.try_emplace(TR_KEY_arguments, std::move(args));
auto top = tr_variant{ std::move(map) }; auto top = tr_variant{ std::move(map) };
status |= flush(rpcurl, &top, config); status |= flush(rpcurl, &top, config);
@@ -3429,9 +3415,7 @@ int process_args(char const* rpcurl, int argc, char const* const* argv, RemoteCo
args.try_emplace(TR_KEY_path, rename_from); args.try_emplace(TR_KEY_path, rename_from);
args.try_emplace(TR_KEY_name, optarg_sv); args.try_emplace(TR_KEY_name, optarg_sv);
add_id_arg(args, config); add_id_arg(args, config);
map.try_emplace( map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_torrent_rename_path_kebab));
TR_KEY_method,
tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_torrent_rename_path_kebab)));
map.try_emplace(TR_KEY_arguments, std::move(args)); map.try_emplace(TR_KEY_arguments, std::move(args));
auto top = tr_variant{ std::move(map) }; auto top = tr_variant{ std::move(map) };
status |= flush(rpcurl, &top, config); status |= flush(rpcurl, &top, config);
@@ -3446,9 +3430,7 @@ int process_args(char const* rpcurl, int argc, char const* const* argv, RemoteCo
case 732: case 732:
{ {
auto map = tr_variant::Map{ 2 }; auto map = tr_variant::Map{ 2 };
map.try_emplace( map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_group_get_kebab));
TR_KEY_method,
tr_variant::unmanaged_string(tr_quark_get_string_view(TR_KEY_group_get_kebab)));
map.try_emplace(TR_KEY_tag, TAG_GROUPS); map.try_emplace(TR_KEY_tag, TAG_GROUPS);
auto top = tr_variant{ std::move(map) }; auto top = tr_variant{ std::move(map) };
status |= flush(rpcurl, &top, config); status |= flush(rpcurl, &top, config);