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, /* For functions that can't be immediately executed, like torrentAdd,
* this is the callback data used to pass a response to the caller * this is the callback data used to pass a response to the caller
* when the task is complete */ * when the task is complete */
@@ -177,10 +161,10 @@ static void notifyBatchQueueChange(tr_session* session, std::vector<tr_torrent*>
{ {
for (auto* tor : torrents) 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( static char const* queueMoveTop(
@@ -252,7 +236,7 @@ static char const* torrentStart(
if (!tor->isRunning) if (!tor->isRunning)
{ {
tr_torrentStart(tor); 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) if (!tor->isRunning)
{ {
tr_torrentStartNow(tor); 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) if (tor->isRunning || tor->isQueued() || tor->verifyState() != TR_VERIFY_NONE)
{ {
tor->isStopping = true; 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)) for (auto* tor : getTorrents(session, args_in))
{ {
tr_rpc_callback_status const status = notify(session, type, tor); if (auto const status = session->rpcNotify(type, tor); (status & TR_RPC_NOREMOVE) == 0)
if ((status & TR_RPC_NOREMOVE) == 0)
{ {
tr_torrentRemove(tor, delete_flag, nullptr); tr_torrentRemove(tor, delete_flag, nullptr);
} }
@@ -332,7 +314,7 @@ static char const* torrentReannounce(
if (tr_torrentCanManualUpdate(tor)) if (tr_torrentCanManualUpdate(tor))
{ {
tr_torrentManualUpdate(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)) for (auto* tor : getTorrents(session, args_in))
{ {
tr_torrentVerify(tor); tr_torrentVerify(tor);
notify(session, TR_RPC_TORRENT_CHANGED, tor); session->rpcNotify(TR_RPC_TORRENT_CHANGED, tor);
} }
return nullptr; 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; return errmsg;
@@ -1301,7 +1283,7 @@ static char const* torrentSetLocation(
for (auto* tor : getTorrents(session, args_in)) for (auto* tor : getTorrents(session, args_in))
{ {
tor->setLocation(location, move, nullptr, nullptr); tor->setLocation(location, move, nullptr, nullptr);
notify(session, TR_RPC_TORRENT_MOVED, tor); session->rpcNotify(TR_RPC_TORRENT_MOVED, tor);
} }
return nullptr; return nullptr;
@@ -1499,7 +1481,7 @@ static void addTorrentImpl(struct tr_rpc_idle_data* data, tr_ctor* ctor)
return; return;
} }
notify(data->session, TR_RPC_TORRENT_ADDED, tor); data->session->rpcNotify(TR_RPC_TORRENT_ADDED, tor);
addTorrentInfo( addTorrentInfo(
tor, tor,
TrFormat::Object, TrFormat::Object,
@@ -2055,7 +2037,7 @@ static char const* sessionSet(
tr_sessionSetAntiBruteForceEnabled(session, boolVal); tr_sessionSetAntiBruteForceEnabled(session, boolVal);
} }
notify(session, TR_RPC_SESSION_CHANGED, nullptr); session->rpcNotify(TR_RPC_SESSION_CHANGED, nullptr);
return nullptr; return nullptr;
} }
@@ -2425,7 +2407,7 @@ static char const* sessionClose(
tr_variant* /*args_out*/, tr_variant* /*args_out*/,
tr_rpc_idle_data* /*idle_data*/) tr_rpc_idle_data* /*idle_data*/)
{ {
notify(session, TR_RPC_SESSION_CLOSE, nullptr); session->rpcNotify(TR_RPC_SESSION_CLOSE, nullptr);
return 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); TR_ASSERT(session != nullptr);
session->rpc_func = func; session->rpc_func_ = func;
session->rpc_func_user_data = user_data; session->rpc_func_user_data_ = user_data;
} }
void tr_sessionSetRPCWhitelist(tr_session* session, char const* whitelist) void tr_sessionSetRPCWhitelist(tr_session* session, char const* whitelist)

View File

@@ -543,16 +543,10 @@ public:
tr_session* const session_; tr_session* const session_;
}; };
tr_port random_port_low_;
tr_port random_port_high_;
std::unique_ptr<tr_web> web; std::unique_ptr<tr_web> web;
tr_session_id session_id; 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* announcer = nullptr;
struct tr_announcer_udp* announcer_udp = nullptr; struct tr_announcer_udp* announcer_udp = nullptr;
@@ -642,6 +636,16 @@ public:
return should_pause_added_torrents_; 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: private:
[[nodiscard]] tr_port randomPort() const; [[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_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_sessionSetQueueStalledEnabled(tr_session* session, bool is_enabled);
friend void tr_sessionSetQueueStalledMinutes(tr_session* session, int minutes); 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; struct init_data;
void initImpl(init_data&); void initImpl(init_data&);
@@ -667,6 +672,12 @@ private:
void closeImplWaitForIdleUdp(); void closeImplWaitForIdleUdp();
void closeImplFinish(); 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_pause_added_torrents_ = false;
bool should_delete_source_torrents_ = false; bool should_delete_source_torrents_ = false;
bool should_scrape_paused_torrents_ = false; bool should_scrape_paused_torrents_ = false;