mirror of https://github.com/aria2/aria2
Add "seeder" key to tellStatus RPC response
parent
dbcf07fd11
commit
25615fcb17
|
@ -2518,6 +2518,10 @@ For information on the *secret* parameter, see :ref:`rpc_auth`.
|
||||||
``numSeeders``
|
``numSeeders``
|
||||||
The number of seeders aria2 has connected to. BitTorrent only.
|
The number of seeders aria2 has connected to. BitTorrent only.
|
||||||
|
|
||||||
|
``seeder``
|
||||||
|
``true`` if the local endpoint is a seeder. Otherwise ``false``.
|
||||||
|
BitTorrent only.
|
||||||
|
|
||||||
``pieceLength``
|
``pieceLength``
|
||||||
Piece length in bytes.
|
Piece length in bytes.
|
||||||
|
|
||||||
|
|
|
@ -105,10 +105,7 @@ void printSizeProgress(ColorizedStream& o,
|
||||||
const SizeFormatter& sizeFormatter)
|
const SizeFormatter& sizeFormatter)
|
||||||
{
|
{
|
||||||
#ifdef ENABLE_BITTORRENT
|
#ifdef ENABLE_BITTORRENT
|
||||||
if (rg->getDownloadContext()->hasAttribute(CTX_ATTR_BT) &&
|
if (rg->isSeeder()) {
|
||||||
!bittorrent::getTorrentAttrs(rg->getDownloadContext())
|
|
||||||
->metadata.empty() &&
|
|
||||||
rg->downloadFinished()) {
|
|
||||||
o << "SEED(";
|
o << "SEED(";
|
||||||
if (rg->getCompletedLength() > 0) {
|
if (rg->getCompletedLength() > 0) {
|
||||||
std::streamsize oldprec = o.precision();
|
std::streamsize oldprec = o.precision();
|
||||||
|
|
|
@ -1264,4 +1264,10 @@ void RequestGroup::enableSeedOnly()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool RequestGroup::isSeeder() const {
|
||||||
|
return downloadContext_->hasAttribute(CTX_ATTR_BT) &&
|
||||||
|
!bittorrent::getTorrentAttrs(downloadContext_)->metadata.empty() &&
|
||||||
|
downloadFinished();
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace aria2
|
} // namespace aria2
|
||||||
|
|
|
@ -489,6 +489,9 @@ public:
|
||||||
bool isSeedOnlyEnabled() { return seedOnly_; }
|
bool isSeedOnlyEnabled() { return seedOnly_; }
|
||||||
|
|
||||||
void enableSeedOnly();
|
void enableSeedOnly();
|
||||||
|
|
||||||
|
// Returns true if this download is now seeding.
|
||||||
|
bool isSeeder() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace aria2
|
} // namespace aria2
|
||||||
|
|
|
@ -710,7 +710,9 @@ void gatherBitTorrentMetadata(Dict* btDict, TorrentAttribute* torrentAttrs)
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
void gatherProgressBitTorrent(Dict* entryDict, TorrentAttribute* torrentAttrs,
|
void gatherProgressBitTorrent(Dict* entryDict,
|
||||||
|
const std::shared_ptr<RequestGroup>& group,
|
||||||
|
TorrentAttribute* torrentAttrs,
|
||||||
BtObject* btObject,
|
BtObject* btObject,
|
||||||
const std::vector<std::string>& keys)
|
const std::vector<std::string>& keys)
|
||||||
{
|
{
|
||||||
|
@ -734,6 +736,9 @@ void gatherProgressBitTorrent(Dict* entryDict, TorrentAttribute* torrentAttrs,
|
||||||
util::uitos(countSeeder(peers.begin(), peers.end())));
|
util::uitos(countSeeder(peers.begin(), peers.end())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (requested_key(keys, KEY_SEEDER)) {
|
||||||
|
entryDict->put(KEY_SEEDER, group->isSeeder() ? VLB_TRUE : VLB_FALSE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
@ -777,8 +782,8 @@ void gatherProgress(Dict* entryDict, const std::shared_ptr<RequestGroup>& group,
|
||||||
gatherProgressCommon(entryDict, group, keys);
|
gatherProgressCommon(entryDict, group, keys);
|
||||||
#ifdef ENABLE_BITTORRENT
|
#ifdef ENABLE_BITTORRENT
|
||||||
if (group->getDownloadContext()->hasAttribute(CTX_ATTR_BT)) {
|
if (group->getDownloadContext()->hasAttribute(CTX_ATTR_BT)) {
|
||||||
gatherProgressBitTorrent(
|
gatherProgressBitTorrent(entryDict, group, bittorrent::getTorrentAttrs(
|
||||||
entryDict, bittorrent::getTorrentAttrs(group->getDownloadContext()),
|
group->getDownloadContext()),
|
||||||
e->getBtRegistry()->get(group->getGID()), keys);
|
e->getBtRegistry()->get(group->getGID()), keys);
|
||||||
}
|
}
|
||||||
#endif // ENABLE_BITTORRENT
|
#endif // ENABLE_BITTORRENT
|
||||||
|
|
Loading…
Reference in New Issue