feat(core): Unify application components shutdown (#8097)

## Summary

Add `ShutdownService` and `OnShutdown` decorator for more unified way to
shutdown different components. Use this new way in the following
components:

- HTTP(S) server
- Pruning service
- Push connection
- License

---------

Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
This commit is contained in:
Tomi Turtiainen
2023-12-22 12:39:58 +02:00
committed by GitHub
parent c158ca2471
commit 3a881be6c2
15 changed files with 412 additions and 17 deletions

View File

@@ -14,6 +14,7 @@ import { WebSocketPush } from './websocket.push';
import type { PushResponse, SSEPushRequest, WebSocketPushRequest } from './types';
import type { IPushDataType } from '@/Interfaces';
import type { User } from '@db/entities/User';
import { OnShutdown } from '@/decorators/OnShutdown';
const useWebSockets = config.getEnv('push.backend') === 'websocket';
@@ -70,6 +71,11 @@ export class Push extends EventEmitter {
sendToUsers<D>(type: IPushDataType, data: D, userIds: Array<User['id']>) {
this.backend.sendToUsers(type, data, userIds);
}
@OnShutdown()
onShutdown(): void {
this.backend.closeAllConnections();
}
}
export const setupPushServer = (restEndpoint: string, server: Server, app: Application) => {