mirror of
https://github.com/transmission/transmission.git
synced 2025-12-20 02:18:42 +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,
|
/* 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user