parent
f0f81f9907
commit
0be95b5074
|
@ -2044,24 +2044,24 @@ static char const* sessionSet(
|
|||
tr_sessionSetQueueSize(session, TR_UP, (int)i);
|
||||
}
|
||||
|
||||
if (tr_variantDictFindStr(args_in, TR_KEY_script_torrent_added_filename, &str, nullptr))
|
||||
if (tr_variantDictFindStrView(args_in, TR_KEY_script_torrent_added_filename, &sv))
|
||||
{
|
||||
tr_sessionSetScript(session, TR_SCRIPT_ON_TORRENT_ADDED, str);
|
||||
session->setScript(TR_SCRIPT_ON_TORRENT_ADDED, sv);
|
||||
}
|
||||
|
||||
if (tr_variantDictFindBool(args_in, TR_KEY_script_torrent_added_enabled, &boolVal))
|
||||
{
|
||||
tr_sessionSetScriptEnabled(session, TR_SCRIPT_ON_TORRENT_ADDED, boolVal);
|
||||
session->useScript(TR_SCRIPT_ON_TORRENT_ADDED, boolVal);
|
||||
}
|
||||
|
||||
if (tr_variantDictFindStr(args_in, TR_KEY_script_torrent_done_filename, &str, nullptr))
|
||||
if (tr_variantDictFindStrView(args_in, TR_KEY_script_torrent_done_filename, &sv))
|
||||
{
|
||||
tr_sessionSetScript(session, TR_SCRIPT_ON_TORRENT_DONE, str);
|
||||
session->setScript(TR_SCRIPT_ON_TORRENT_DONE, sv);
|
||||
}
|
||||
|
||||
if (tr_variantDictFindBool(args_in, TR_KEY_script_torrent_done_enabled, &boolVal))
|
||||
{
|
||||
tr_sessionSetScriptEnabled(session, TR_SCRIPT_ON_TORRENT_DONE, boolVal);
|
||||
session->useScript(TR_SCRIPT_ON_TORRENT_DONE, boolVal);
|
||||
}
|
||||
|
||||
if (tr_variantDictFindBool(args_in, TR_KEY_trash_original_torrent_files, &boolVal))
|
||||
|
|
|
@ -1111,22 +1111,22 @@ static void sessionSetImpl(void* vdata)
|
|||
|
||||
if (tr_variantDictFindBool(settings, TR_KEY_script_torrent_added_enabled, &boolVal))
|
||||
{
|
||||
tr_sessionSetScriptEnabled(session, TR_SCRIPT_ON_TORRENT_ADDED, boolVal);
|
||||
session->useScript(TR_SCRIPT_ON_TORRENT_ADDED, boolVal);
|
||||
}
|
||||
|
||||
if (tr_variantDictFindStr(settings, TR_KEY_script_torrent_added_filename, &strVal, nullptr))
|
||||
if (tr_variantDictFindStrView(settings, TR_KEY_script_torrent_added_filename, &sv))
|
||||
{
|
||||
tr_sessionSetScript(session, TR_SCRIPT_ON_TORRENT_ADDED, strVal);
|
||||
session->setScript(TR_SCRIPT_ON_TORRENT_ADDED, sv);
|
||||
}
|
||||
|
||||
if (tr_variantDictFindBool(settings, TR_KEY_script_torrent_done_enabled, &boolVal))
|
||||
{
|
||||
tr_sessionSetScriptEnabled(session, TR_SCRIPT_ON_TORRENT_DONE, boolVal);
|
||||
session->useScript(TR_SCRIPT_ON_TORRENT_DONE, boolVal);
|
||||
}
|
||||
|
||||
if (tr_variantDictFindStr(settings, TR_KEY_script_torrent_done_filename, &strVal, nullptr))
|
||||
if (tr_variantDictFindStrView(settings, TR_KEY_script_torrent_done_filename, &sv))
|
||||
{
|
||||
tr_sessionSetScript(session, TR_SCRIPT_ON_TORRENT_DONE, strVal);
|
||||
session->setScript(TR_SCRIPT_ON_TORRENT_DONE, sv);
|
||||
}
|
||||
|
||||
if (tr_variantDictFindBool(settings, TR_KEY_scrape_paused_torrents_enabled, &boolVal))
|
||||
|
@ -2675,7 +2675,7 @@ void tr_sessionSetScriptEnabled(tr_session* session, TrScript type, bool enabled
|
|||
TR_ASSERT(tr_isSession(session));
|
||||
TR_ASSERT(type < TR_SCRIPT_N_TYPES);
|
||||
|
||||
session->scripts_enabled[type] = enabled;
|
||||
session->useScript(type, enabled);
|
||||
}
|
||||
|
||||
bool tr_sessionIsScriptEnabled(tr_session const* session, TrScript type)
|
||||
|
@ -2683,7 +2683,7 @@ bool tr_sessionIsScriptEnabled(tr_session const* session, TrScript type)
|
|||
TR_ASSERT(tr_isSession(session));
|
||||
TR_ASSERT(type < TR_SCRIPT_N_TYPES);
|
||||
|
||||
return session->scripts_enabled[type];
|
||||
return session->useScript(type);
|
||||
}
|
||||
|
||||
void tr_sessionSetScript(tr_session* session, TrScript type, char const* script)
|
||||
|
@ -2691,7 +2691,7 @@ void tr_sessionSetScript(tr_session* session, TrScript type, char const* script)
|
|||
TR_ASSERT(tr_isSession(session));
|
||||
TR_ASSERT(type < TR_SCRIPT_N_TYPES);
|
||||
|
||||
session->scripts[type].assign(script ? script : "");
|
||||
session->setScript(type, script ? script : "");
|
||||
}
|
||||
|
||||
char const* tr_sessionGetScript(tr_session const* session, TrScript type)
|
||||
|
@ -2699,7 +2699,7 @@ char const* tr_sessionGetScript(tr_session const* session, TrScript type)
|
|||
TR_ASSERT(tr_isSession(session));
|
||||
TR_ASSERT(type < TR_SCRIPT_N_TYPES);
|
||||
|
||||
return session->scripts[type].c_str();
|
||||
return session->script(type).c_str();
|
||||
}
|
||||
|
||||
/***
|
||||
|
|
|
@ -161,6 +161,26 @@ public:
|
|||
incomplete_dir_enabled_ = enabled;
|
||||
}
|
||||
|
||||
void useScript(TrScript i, bool enabled)
|
||||
{
|
||||
scripts_enabled_[i] = enabled;
|
||||
}
|
||||
|
||||
bool useScript(TrScript i) const
|
||||
{
|
||||
return scripts_enabled_[i];
|
||||
}
|
||||
|
||||
void setScript(TrScript i, std::string_view path)
|
||||
{
|
||||
scripts_[i] = path;
|
||||
}
|
||||
|
||||
std::string const& script(TrScript i) const
|
||||
{
|
||||
return scripts_[i];
|
||||
}
|
||||
|
||||
public:
|
||||
bool isPortRandom;
|
||||
bool isPexEnabled;
|
||||
|
@ -177,7 +197,6 @@ public:
|
|||
bool pauseAddedTorrent;
|
||||
bool deleteSourceTorrent;
|
||||
bool scrapePausedTorrents;
|
||||
std::array<bool, TR_SCRIPT_N_TYPES> scripts_enabled;
|
||||
|
||||
uint8_t peer_id_ttl_hours;
|
||||
|
||||
|
@ -245,8 +264,6 @@ public:
|
|||
std::map<uint8_t const*, tr_torrent*, CompareHash> torrentsByHash;
|
||||
std::map<std::string_view, tr_torrent*, CaseInsensitiveStringCompare> torrentsByHashString;
|
||||
|
||||
std::array<std::string, TR_SCRIPT_N_TYPES> scripts;
|
||||
|
||||
char* configDir;
|
||||
char* resumeDir;
|
||||
char* torrentDir;
|
||||
|
@ -289,9 +306,11 @@ public:
|
|||
struct tr_bindinfo* bind_ipv6;
|
||||
|
||||
private:
|
||||
std::array<std::string, TR_SCRIPT_N_TYPES> scripts_;
|
||||
std::string incomplete_dir_;
|
||||
std::string download_dir_;
|
||||
|
||||
std::array<bool, TR_SCRIPT_N_TYPES> scripts_enabled_;
|
||||
bool incomplete_dir_enabled_ = false;
|
||||
};
|
||||
|
||||
|
|
|
@ -35,15 +35,15 @@ TEST_F(SessionTest, properties)
|
|||
|
||||
// download dir
|
||||
|
||||
for (auto const& sv : { "foo"sv, "bar"sv, ""sv })
|
||||
for (auto const& value : { "foo"sv, "bar"sv, ""sv })
|
||||
{
|
||||
session->setDownloadDir(sv);
|
||||
EXPECT_EQ(sv, session->downloadDir());
|
||||
EXPECT_EQ(sv, tr_sessionGetDownloadDir(session));
|
||||
session->setDownloadDir(value);
|
||||
EXPECT_EQ(value, session->downloadDir());
|
||||
EXPECT_EQ(value, tr_sessionGetDownloadDir(session));
|
||||
|
||||
tr_sessionSetDownloadDir(session, std::string(sv).c_str());
|
||||
EXPECT_EQ(sv, session->downloadDir());
|
||||
EXPECT_EQ(sv, tr_sessionGetDownloadDir(session));
|
||||
tr_sessionSetDownloadDir(session, std::string(value).c_str());
|
||||
EXPECT_EQ(value, session->downloadDir());
|
||||
EXPECT_EQ(value, tr_sessionGetDownloadDir(session));
|
||||
}
|
||||
|
||||
tr_sessionSetDownloadDir(session, nullptr);
|
||||
|
@ -52,32 +52,63 @@ TEST_F(SessionTest, properties)
|
|||
|
||||
// incomplete dir
|
||||
|
||||
for (auto const& sv : { "foo"sv, "bar"sv, ""sv })
|
||||
for (auto const& value : { "foo"sv, "bar"sv, ""sv })
|
||||
{
|
||||
session->setIncompleteDir(sv);
|
||||
EXPECT_EQ(sv, session->incompleteDir());
|
||||
EXPECT_EQ(sv, tr_sessionGetIncompleteDir(session));
|
||||
session->setIncompleteDir(value);
|
||||
EXPECT_EQ(value, session->incompleteDir());
|
||||
EXPECT_EQ(value, tr_sessionGetIncompleteDir(session));
|
||||
|
||||
tr_sessionSetIncompleteDir(session, std::string(sv).c_str());
|
||||
EXPECT_EQ(sv, session->incompleteDir());
|
||||
EXPECT_EQ(sv, tr_sessionGetIncompleteDir(session));
|
||||
tr_sessionSetIncompleteDir(session, std::string(value).c_str());
|
||||
EXPECT_EQ(value, session->incompleteDir());
|
||||
EXPECT_EQ(value, tr_sessionGetIncompleteDir(session));
|
||||
}
|
||||
|
||||
tr_sessionSetIncompleteDir(session, nullptr);
|
||||
EXPECT_EQ(""sv, session->incompleteDir());
|
||||
EXPECT_EQ(""sv, tr_sessionGetIncompleteDir(session));
|
||||
|
||||
// script
|
||||
|
||||
for (auto const& type : { TR_SCRIPT_ON_TORRENT_ADDED, TR_SCRIPT_ON_TORRENT_DONE })
|
||||
{
|
||||
for (auto const& value : { "foo"sv, "bar"sv, ""sv })
|
||||
{
|
||||
session->setScript(type, value);
|
||||
EXPECT_EQ(value, session->script(type));
|
||||
EXPECT_EQ(value, tr_sessionGetScript(session, type));
|
||||
|
||||
tr_sessionSetScript(session, type, std::string(value).c_str());
|
||||
EXPECT_EQ(value, session->script(type));
|
||||
EXPECT_EQ(value, tr_sessionGetScript(session, type));
|
||||
}
|
||||
|
||||
tr_sessionSetScript(session, type, nullptr);
|
||||
EXPECT_EQ(""sv, session->script(type));
|
||||
EXPECT_EQ(""sv, tr_sessionGetScript(session, type));
|
||||
|
||||
for (auto const value : { true, false })
|
||||
{
|
||||
session->useScript(type, value);
|
||||
EXPECT_EQ(value, session->useScript(type));
|
||||
EXPECT_EQ(value, tr_sessionIsScriptEnabled(session, type));
|
||||
|
||||
tr_sessionSetScriptEnabled(session, type, value);
|
||||
EXPECT_EQ(value, session->useScript(type));
|
||||
EXPECT_EQ(value, tr_sessionIsScriptEnabled(session, type));
|
||||
}
|
||||
}
|
||||
|
||||
// incomplete dir enabled
|
||||
|
||||
for (auto const b : { true, false })
|
||||
for (auto const value : { true, false })
|
||||
{
|
||||
session->useIncompleteDir(b);
|
||||
EXPECT_EQ(b, session->useIncompleteDir());
|
||||
EXPECT_EQ(b, tr_sessionIsIncompleteDirEnabled(session));
|
||||
session->useIncompleteDir(value);
|
||||
EXPECT_EQ(value, session->useIncompleteDir());
|
||||
EXPECT_EQ(value, tr_sessionIsIncompleteDirEnabled(session));
|
||||
|
||||
tr_sessionSetIncompleteDirEnabled(session, b);
|
||||
EXPECT_EQ(b, session->useIncompleteDir());
|
||||
EXPECT_EQ(b, tr_sessionIsIncompleteDirEnabled(session));
|
||||
tr_sessionSetIncompleteDirEnabled(session, value);
|
||||
EXPECT_EQ(value, session->useIncompleteDir());
|
||||
EXPECT_EQ(value, tr_sessionIsIncompleteDirEnabled(session));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue