UNPKG

cactus-agent

Version:
50 lines (44 loc) 2.21 kB
import {bytes32} from "../../cactus/types/blockchain_format/sized_bytes"; import {int, str, uint64} from "../../cactus/types/_python_types_"; import {TDaemon} from "../../../daemon/index"; import {GetMessageType, metrics_service} from "../../types"; export const cactus_crawler_service = "cactus_crawler"; export type cactus_crawler_service = typeof cactus_crawler_service; export type TPeerCounts = { total_last_5_days: int; reliable_nodes: int; ipv4_last_5_days: bytes32; ipv6_last_5_days: uint64; versions: Record<str, int>; }; export const loaded_initial_peers_command = "loaded_initial_peers"; export type loaded_initial_peers_command = typeof loaded_initial_peers_command; export type TLoadedInitialPeersBroadCast = { peer_counts: TPeerCounts; }; export type WsLoadedInitialPeersMessage = GetMessageType<cactus_crawler_service, loaded_initial_peers_command, TLoadedInitialPeersBroadCast>; export async function on_loaded_initial_peers(daemon: TDaemon, callback: (e: WsLoadedInitialPeersMessage) => unknown){ await daemon.subscribe(metrics_service); const messageListener = (e: WsCrawlerMessage) => { if(e.origin === cactus_crawler_service && e.command === loaded_initial_peers_command){ callback(e); } }; return daemon.addMessageListener(cactus_crawler_service, messageListener); } export const crawl_batch_completed_command = "crawl_batch_completed"; export type crawl_batch_completed_command = typeof crawl_batch_completed_command; export type TCrawlBatchCompletedBroadCast = { peer_counts: TPeerCounts; }; export type WsCrawlBatchCompletedMessage = GetMessageType<cactus_crawler_service, crawl_batch_completed_command, TCrawlBatchCompletedBroadCast>; export async function on_crawl_batch_completed(daemon: TDaemon, callback: (e: WsCrawlBatchCompletedMessage) => unknown){ await daemon.subscribe(metrics_service); const messageListener = (e: WsCrawlerMessage) => { if(e.origin === cactus_crawler_service && e.command === crawl_batch_completed_command){ callback(e); } }; return daemon.addMessageListener(cactus_crawler_service, messageListener); } export type WsCrawlerMessage = WsLoadedInitialPeersMessage | WsCrawlBatchCompletedMessage;