Files
q-buffer/apps/server/src/realtime/emitter.ts

57 lines
1.5 KiB
TypeScript

import { Server } from "socket.io";
import { EVENTS } from "./events";
import { StatusSnapshot } from "../status/status.service";
import { LoopJob, TimerLog, TimerSummary } from "../types";
import { EnrichedWatcherItem, WatcherListItem, WatcherSummaryResponse } from "../watcher/watcher.types";
let io: Server | null = null;
export const initEmitter = (server: Server) => {
io = server;
};
export const emitStatusSnapshot = (snapshot: StatusSnapshot) => {
io?.emit(EVENTS.STATUS_SNAPSHOT, snapshot);
};
export const emitStatusUpdate = (snapshot: StatusSnapshot) => {
io?.emit(EVENTS.STATUS_UPDATE, snapshot);
};
export const emitJobMetrics = (job: LoopJob) => {
io?.emit(EVENTS.JOB_METRICS, job);
};
export const emitJobLog = (payload: {
jobId: string;
level: "INFO" | "WARN" | "ERROR";
message: string;
createdAt: string;
}) => {
io?.emit(EVENTS.JOB_LOG, payload);
};
export const emitQbitHealth = (payload: StatusSnapshot["qbit"]) => {
io?.emit(EVENTS.QBIT_HEALTH, payload);
};
export const emitTimerLog = (payload: TimerLog) => {
io?.emit(EVENTS.TIMER_LOG, payload);
};
export const emitTimerSummary = (payload: TimerSummary) => {
io?.emit(EVENTS.TIMER_SUMMARY, payload);
};
export const emitWatchersList = (payload: WatcherListItem[]) => {
io?.emit(EVENTS.WATCHERS_LIST, payload);
};
export const emitWatcherItems = (payload: EnrichedWatcherItem[]) => {
io?.emit(EVENTS.WATCHER_ITEMS, payload);
};
export const emitWatcherSummary = (payload: WatcherSummaryResponse) => {
io?.emit(EVENTS.WATCHER_SUMMARY, payload);
};