コード例 #1
0
ファイル: LogApi.cpp プロジェクト: fhede/airdcpp-webclient
	void LogApi::onMessagesChanged() noexcept {
		if (!subscriptionActive("log_info")) {
			return;
		}

		json j;
		Serializer::serializeCacheInfo(j, LogManager::getInstance()->getCache(), Serializer::serializeUnreadLog);
		send("log_info", j);
	}
コード例 #2
0
ファイル: QueueApi.cpp プロジェクト: fhede/airdcpp-webclient
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));
    });
}
コード例 #3
0
ファイル: QueueApi.cpp プロジェクト: fhede/airdcpp-webclient
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));
    });
}
コード例 #4
0
ファイル: HubApi.cpp プロジェクト: sbraz/airdcpp-webclient
	// 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));
		});
	}
コード例 #5
0
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() }
    });
}
コード例 #6
0
	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() }
		});
	}
コード例 #7
0
ファイル: HubInfo.cpp プロジェクト: fhede/airdcpp-webclient
	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);
	}
コード例 #8
0
ファイル: SystemApi.cpp プロジェクト: sbraz/airdcpp-webclient
	void SystemApi::onTimer() noexcept {
		if (!subscriptionActive("away_state")) {
			return;
		}

		auto newState = serializeAwayState();
		if (newState == previousAway) {
			return;
		}

		previousAway = newState;
		send("away_state", newState);
	}
コード例 #9
0
ファイル: HubApi.cpp プロジェクト: sbraz/airdcpp-webclient
	void HubApi::on(ClientManagerListener::ClientRemoved, const ClientPtr& aClient) noexcept {
		addAsyncTask([=] {
			removeSubModule(aClient->getClientId());

			if (!subscriptionActive("hub_removed")) {
				return;
			}

			send("hub_removed", {
				{ "id", aClient->getClientId() }
			});
		});
	}
コード例 #10
0
ファイル: QueueApi.cpp プロジェクト: fhede/airdcpp-webclient
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);
    });
}
コード例 #11
0
	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);
	}
コード例 #12
0
ファイル: ShareRootApi.cpp プロジェクト: Caraul/airgit
	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); });
	}
コード例 #13
0
ファイル: HashApi.cpp プロジェクト: airdcpp/airdcpp-webapi
	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);
	}
コード例 #14
0
ファイル: HashApi.cpp プロジェクト: airdcpp/airdcpp-webapi
	void HashApi::updateDbStatus(bool aMaintenanceRunning) noexcept {
		if (!subscriptionActive("hash_database_status"))
			return;

		send("hash_database_status", formatDbStatus(aMaintenanceRunning));
	}
コード例 #15
0
ファイル: QueueApi.cpp プロジェクト: fhede/airdcpp-webclient
void QueueApi::on(QueueManagerListener::Removed, const QueueItemPtr& aQI, bool /*finished*/) noexcept {
    if (!subscriptionActive("file_removed"))
        return;

    //send("file_removed", QueueUtils::serializeQueueItem(aQI));
}
コード例 #16
0
ファイル: QueueApi.cpp プロジェクト: fhede/airdcpp-webclient
void QueueApi::on(QueueManagerListener::Added, QueueItemPtr& aQI) noexcept {
    if (!subscriptionActive("file_added"))
        return;

    //send("file_added", QueueUtils::serializeQueueItem(aQI));
}
コード例 #17
0
ファイル: QueueApi.cpp プロジェクト: fhede/airdcpp-webclient
void QueueApi::onFileUpdated(const QueueItemPtr& aQI) {
    if (!subscriptionActive("file_updated"))
        return;

    //send("file_updated", QueueUtils::serializeQueueItem(aQI));
}