74 lines
2.6 KiB
JavaScript
74 lines
2.6 KiB
JavaScript
/**
|
|
* Wire all domain handlers onto a PeerSession.
|
|
*/
|
|
import { registerHandshake } from './session.js'
|
|
import { registerContainerHandlers } from '../handlers/containers.js'
|
|
import { registerImageHandlers } from '../handlers/images.js'
|
|
import { registerNetworkHandlers } from '../handlers/networks.js'
|
|
import { registerVolumeHandlers } from '../handlers/volumes.js'
|
|
import { registerStackHandlers } from '../handlers/stacks.js'
|
|
import { registerDeployHandlers } from '../handlers/deploy.js'
|
|
import { registerTerminalHandlers, cleanupTerminalOnClose } from '../handlers/terminal.js'
|
|
import { registerLogsHandlers, cleanupLogsOnClose } from '../handlers/logs.js'
|
|
import { registerDockerCliHandlers } from '../handlers/docker-cli.js'
|
|
import { registerSystemHandlers } from '../handlers/system.js'
|
|
import { registerSwarmHandlers } from '../handlers/swarm.js'
|
|
import { registerPluginHandlers } from '../handlers/plugins.js'
|
|
import { registerPeerHandlers } from '../handlers/peers.js'
|
|
import { registerVaultHandlers } from '../handlers/vault.js'
|
|
import { registerRegistryHandlers } from '../handlers/registry.js'
|
|
import { registerBinaryStreamHandlers } from './binary-stream.js'
|
|
import { registerSuggestionHandlers } from '../handlers/suggestions.js'
|
|
import { registerTunnelHandlers } from '../handlers/tunnels.js'
|
|
import { registerAlertHandlers } from '../handlers/alerts.js'
|
|
import { clearPeerStatsInterest } from '../services/stats.js'
|
|
|
|
/**
|
|
* @param {import('./session.js').PeerSession} session
|
|
*/
|
|
export function registerAllHandlers(session) {
|
|
registerHandshake(session)
|
|
registerSystemHandlers(session)
|
|
registerAlertHandlers(session)
|
|
registerContainerHandlers(session)
|
|
registerImageHandlers(session)
|
|
registerNetworkHandlers(session)
|
|
registerVolumeHandlers(session)
|
|
registerStackHandlers(session)
|
|
registerDeployHandlers(session)
|
|
registerTerminalHandlers(session)
|
|
registerLogsHandlers(session)
|
|
registerDockerCliHandlers(session)
|
|
registerSwarmHandlers(session)
|
|
registerPluginHandlers(session)
|
|
registerPeerHandlers(session)
|
|
registerVaultHandlers(session)
|
|
registerRegistryHandlers(session)
|
|
registerBinaryStreamHandlers(session)
|
|
registerSuggestionHandlers(session)
|
|
registerTunnelHandlers(session)
|
|
}
|
|
|
|
/**
|
|
* @param {import('./session.js').PeerSession} session
|
|
*/
|
|
export function cleanupSession(session) {
|
|
cleanupTerminalOnClose(session)
|
|
cleanupLogsOnClose(session)
|
|
try {
|
|
clearPeerStatsInterest(session.id)
|
|
} catch {
|
|
// ignore
|
|
}
|
|
for (const [key, value] of session.state.entries()) {
|
|
if (key.startsWith('exec:') && value?.stream) {
|
|
try {
|
|
value.stream.end()
|
|
} catch {
|
|
// ignore
|
|
}
|
|
}
|
|
}
|
|
session.state.clear()
|
|
}
|