void LogApi::onMessagesChanged() noexcept { if (!subscriptionActive("log_info")) { return; } json j; Serializer::serializeCacheInfo(j, LogManager::getInstance()->getCache(), Serializer::serializeUnreadLog); send("log_info", j); }
void QueueApi::onBundleUpdated(const BundlePtr& aBundle, const PropertyIdSet& aUpdatedProperties, const string& aSubscription) { bundleView.onItemUpdated(aBundle, aUpdatedProperties); if (!subscriptionActive(aSubscription)) return; addAsyncTask([=] { send(aSubscription, Serializer::serializeItem(aBundle, bundlePropertyHandler)); }); }
void QueueApi::on(QueueManagerListener::BundleRemoved, const BundlePtr& aBundle) noexcept { bundleView.onItemRemoved(aBundle); if (!subscriptionActive("bundle_removed")) return; addAsyncTask([=] { send("bundle_removed", Serializer::serializeItem(aBundle, bundlePropertyHandler)); }); }
// Use async tasks because adding/removing HubInfos require calls to ClientListener (which is likely // to cause deadlocks if done inside ClientManagerListener) void HubApi::on(ClientManagerListener::ClientCreated, const ClientPtr& aClient) noexcept { addAsyncTask([=] { addHub(aClient); if (!subscriptionActive("hub_created")) { return; } send("hub_created", serializeClient(aClient)); }); }
void FilelistApi::on(DirectoryListingManagerListener::ListingClosed, const DirectoryListingPtr& aList) noexcept { removeSubModule(aList->getUser()->getCID()); if (!subscriptionActive("filelist_removed")) { return; } send("filelist_removed", { { "id", aList->getUser()->getCID().toBase32() } }); }
void PrivateChatApi::on(MessageManagerListener::ChatRemoved, const PrivateChatPtr& aChat) noexcept { removeSubModule(aChat->getUser()->getCID()); if (!subscriptionActive("private_chat_removed")) { return; } send("private_chat_removed", { { "id", aChat->getUser()->getCID().toBase32() } }); }
void HubInfo::onTimer() noexcept { if (!subscriptionActive("hub_counts_updated")) { return; } auto newCounts = serializeCounts(client); if (newCounts == previousCounts) { return; } previousCounts = newCounts; send("hub_counts_updated", newCounts); }
void SystemApi::onTimer() noexcept { if (!subscriptionActive("away_state")) { return; } auto newState = serializeAwayState(); if (newState == previousAway) { return; } previousAway = newState; send("away_state", newState); }
void HubApi::on(ClientManagerListener::ClientRemoved, const ClientPtr& aClient) noexcept { addAsyncTask([=] { removeSubModule(aClient->getClientId()); if (!subscriptionActive("hub_removed")) { return; } send("hub_removed", { { "id", aClient->getClientId() } }); }); }
void QueueApi::on(DownloadManagerListener::BundleTick, const BundleList& tickBundles, uint64_t /*aTick*/) noexcept { bundleView.onItemsUpdated(tickBundles, { PROP_SPEED, PROP_SECONDS_LEFT, PROP_BYTES_DOWNLOADED, PROP_STATUS }); if (!subscriptionActive("bundle_tick")) return; addAsyncTask([=] { json j; for (auto& b : tickBundles) { j.push_back(Serializer::serializeItem(b, bundlePropertyHandler)); } send("bundle_tick", j); }); }
void TransferApi::onTimer() { if (!subscriptionActive("transfer_statistics")) return; auto newStats = serializeTransferStats(); if (previousStats == newStats) return; lastUploadBundles = 0; lastDownloadBundles = 0; send("transfer_statistics", JsonUtil::filterExactValues(newStats, previousStats)); previousStats.swap(newStats); }
void ShareRootApi::on(ShareManagerListener::RootCreated, const string& aPath) noexcept { if (!subscriptionActive("share_root_created") && !rootView.isActive()) { return; } auto info = ShareManager::getInstance()->getRootInfo(aPath); { WLock l(cs); roots.push_back(info); } rootView.onItemAdded(info); maybeSend("share_root_created", [&] { return Serializer::serializeItem(info, itemHandler); }); }
void HashApi::onTimer() noexcept { if (!subscriptionActive("hash_statistics")) return; string curFile; int64_t bytesLeft = 0, speed = 0; size_t filesLeft = 0; int hashers = 0; HashManager::getInstance()->getStats(curFile, bytesLeft, filesLeft, speed, hashers); json j = { { "hash_speed", speed }, { "hash_bytes_left", bytesLeft }, { "hash_files_left", filesLeft }, { "hashers", hashers }, }; if (previousStats == j) return; send("hash_statistics", j); previousStats.swap(j); }
void HashApi::updateDbStatus(bool aMaintenanceRunning) noexcept { if (!subscriptionActive("hash_database_status")) return; send("hash_database_status", formatDbStatus(aMaintenanceRunning)); }
void QueueApi::on(QueueManagerListener::Removed, const QueueItemPtr& aQI, bool /*finished*/) noexcept { if (!subscriptionActive("file_removed")) return; //send("file_removed", QueueUtils::serializeQueueItem(aQI)); }
void QueueApi::on(QueueManagerListener::Added, QueueItemPtr& aQI) noexcept { if (!subscriptionActive("file_added")) return; //send("file_added", QueueUtils::serializeQueueItem(aQI)); }
void QueueApi::onFileUpdated(const QueueItemPtr& aQI) { if (!subscriptionActive("file_updated")) return; //send("file_updated", QueueUtils::serializeQueueItem(aQI)); }