refactor: make tr_session.rpc_func_ private (#3640)

This commit is contained in:
Charles Kerr
2022-08-14 10:40:03 -05:00
committed by GitHub
parent 08ec882055
commit 6beca85ae2
3 changed files with 32 additions and 39 deletions

View File

@@ -58,22 +58,6 @@ enum class TrFormat
****
***/
static tr_rpc_callback_status notify(tr_session* session, tr_rpc_callback_type type, tr_torrent* tor)
{
tr_rpc_callback_status status = TR_RPC_OK;
if (session->rpc_func != nullptr)
{
status = (*session->rpc_func)(session, type, tor, session->rpc_func_user_data);
}
return status;
}
/***
****
***/
/* For functions that can't be immediately executed, like torrentAdd,
* this is the callback data used to pass a response to the caller
* when the task is complete */
@@ -177,10 +161,10 @@ static void notifyBatchQueueChange(tr_session* session, std::vector<tr_torrent*>
{
for (auto* tor : torrents)
{
notify(session, TR_RPC_TORRENT_CHANGED, tor);
session->rpcNotify(TR_RPC_TORRENT_CHANGED, tor);
}
notify(session, TR_RPC_SESSION_QUEUE_POSITIONS_CHANGED, nullptr);
session->rpcNotify(TR_RPC_SESSION_QUEUE_POSITIONS_CHANGED);
}
static char const* queueMoveTop(
@@ -252,7 +236,7 @@ static char const* torrentStart(
if (!tor->isRunning)
{
tr_torrentStart(tor);
notify(session, TR_RPC_TORRENT_STARTED, tor);
session->rpcNotify(TR_RPC_TORRENT_STARTED, tor);
}
}
@@ -272,7 +256,7 @@ static char const* torrentStartNow(
if (!tor->isRunning)
{
tr_torrentStartNow(tor);
notify(session, TR_RPC_TORRENT_STARTED, tor);
session->rpcNotify(TR_RPC_TORRENT_STARTED, tor);
}
}
@@ -290,7 +274,7 @@ static char const* torrentStop(
if (tor->isRunning || tor->isQueued() || tor->verifyState() != TR_VERIFY_NONE)
{
tor->isStopping = true;
notify(session, TR_RPC_TORRENT_STOPPED, tor);
session->rpcNotify(TR_RPC_TORRENT_STOPPED, tor);
}
}
@@ -310,9 +294,7 @@ static char const* torrentRemove(
for (auto* tor : getTorrents(session, args_in))
{
tr_rpc_callback_status const status = notify(session, type, tor);
if ((status & TR_RPC_NOREMOVE) == 0)
if (auto const status = session->rpcNotify(type, tor); (status & TR_RPC_NOREMOVE) == 0)
{
tr_torrentRemove(tor, delete_flag, nullptr);
}
@@ -332,7 +314,7 @@ static char const* torrentReannounce(
if (tr_torrentCanManualUpdate(tor))
{
tr_torrentManualUpdate(tor);
notify(session, TR_RPC_TORRENT_CHANGED, tor);
session->rpcNotify(TR_RPC_TORRENT_CHANGED, tor);
}
}
@@ -348,7 +330,7 @@ static char const* torrentVerify(
for (auto* tor : getTorrents(session, args_in))
{
tr_torrentVerify(tor);
notify(session, TR_RPC_TORRENT_CHANGED, tor);
session->rpcNotify(TR_RPC_TORRENT_CHANGED, tor);
}
return nullptr;
@@ -1271,7 +1253,7 @@ static char const* torrentSet(
}
}
notify(session, TR_RPC_TORRENT_CHANGED, tor);
session->rpcNotify(TR_RPC_TORRENT_CHANGED, tor);
}
return errmsg;
@@ -1301,7 +1283,7 @@ static char const* torrentSetLocation(
for (auto* tor : getTorrents(session, args_in))
{
tor->setLocation(location, move, nullptr, nullptr);
notify(session, TR_RPC_TORRENT_MOVED, tor);
session->rpcNotify(TR_RPC_TORRENT_MOVED, tor);
}
return nullptr;
@@ -1499,7 +1481,7 @@ static void addTorrentImpl(struct tr_rpc_idle_data* data, tr_ctor* ctor)
return;
}
notify(data->session, TR_RPC_TORRENT_ADDED, tor);
data->session->rpcNotify(TR_RPC_TORRENT_ADDED, tor);
addTorrentInfo(
tor,
TrFormat::Object,
@@ -2055,7 +2037,7 @@ static char const* sessionSet(
tr_sessionSetAntiBruteForceEnabled(session, boolVal);
}
notify(session, TR_RPC_SESSION_CHANGED, nullptr);
session->rpcNotify(TR_RPC_SESSION_CHANGED, nullptr);
return nullptr;
}
@@ -2425,7 +2407,7 @@ static char const* sessionClose(
tr_variant* /*args_out*/,
tr_rpc_idle_data* /*idle_data*/)
{
notify(session, TR_RPC_SESSION_CLOSE, nullptr);
session->rpcNotify(TR_RPC_SESSION_CLOSE, nullptr);
return nullptr;
}

View File

@@ -2501,8 +2501,8 @@ void tr_sessionSetRPCCallback(tr_session* session, tr_rpc_func func, void* user_
{
TR_ASSERT(session != nullptr);
session->rpc_func = func;
session->rpc_func_user_data = user_data;
session->rpc_func_ = func;
session->rpc_func_user_data_ = user_data;
}
void tr_sessionSetRPCWhitelist(tr_session* session, char const* whitelist)

View File

@@ -543,16 +543,10 @@ public:
tr_session* const session_;
};
tr_port random_port_low_;
tr_port random_port_high_;
std::unique_ptr<tr_web> web;
tr_session_id session_id;
tr_rpc_func rpc_func = nullptr;
void* rpc_func_user_data = nullptr;
struct tr_announcer* announcer = nullptr;
struct tr_announcer_udp* announcer_udp = nullptr;
@@ -642,6 +636,16 @@ public:
return should_pause_added_torrents_;
}
auto rpcNotify(tr_rpc_callback_type type, tr_torrent* tor = nullptr)
{
if (rpc_func_ != nullptr)
{
return (*rpc_func_)(this, type, tor, rpc_func_user_data_);
}
return TR_RPC_OK;
}
private:
[[nodiscard]] tr_port randomPort() const;
@@ -659,6 +663,7 @@ private:
friend void tr_sessionSetQueueSize(tr_session* session, tr_direction dir, int max_simultaneous_seed_torrents);
friend void tr_sessionSetQueueStalledEnabled(tr_session* session, bool is_enabled);
friend void tr_sessionSetQueueStalledMinutes(tr_session* session, int minutes);
friend void tr_sessionSetRPCCallback(tr_session* session, tr_rpc_func func, void* user_data);
struct init_data;
void initImpl(init_data&);
@@ -667,6 +672,12 @@ private:
void closeImplWaitForIdleUdp();
void closeImplFinish();
tr_port random_port_low_;
tr_port random_port_high_;
tr_rpc_func rpc_func_ = nullptr;
void* rpc_func_user_data_ = nullptr;
bool should_pause_added_torrents_ = false;
bool should_delete_source_torrents_ = false;
bool should_scrape_paused_torrents_ = false;