mcp-hub/src/backend-registry.js

48 lines
1,018 B
JavaScript
Raw Normal View History

class BackendRegistry {
constructor() {
this.backends = new Map();
}
register(serviceId, ws) {
this.backends.set(serviceId, {
ws,
connectedAt: new Date().toISOString(),
lastPing: null,
});
console.log(`[registry] registered backend: ${serviceId}`);
}
unregister(serviceId) {
if (this.backends.has(serviceId)) {
this.backends.delete(serviceId);
console.log(`[registry] unregistered backend: ${serviceId}`);
}
}
get(serviceId) {
const entry = this.backends.get(serviceId);
return entry ? entry.ws : null;
}
list() {
return Array.from(this.backends.entries()).map(([serviceId, entry]) => ({
serviceId,
connectedAt: entry.connectedAt,
lastPing: entry.lastPing,
}));
}
updatePing(serviceId) {
const entry = this.backends.get(serviceId);
if (entry) {
entry.lastPing = new Date().toISOString();
}
}
count() {
return this.backends.size;
}
}
module.exports = new BackendRegistry();