mirror of
https://github.com/transmission/transmission.git
synced 2025-12-19 18:08:31 +00:00
refactor: make tr_session.rpc_func_ private (#3640)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user