diff options
Diffstat (limited to 'src/server/session/utilities')
-rw-r--r-- | src/server/session/utilities/ipc.ts | 39 |
1 files changed, 17 insertions, 22 deletions
diff --git a/src/server/session/utilities/ipc.ts b/src/server/session/utilities/ipc.ts index 7ad00596d..db4c23180 100644 --- a/src/server/session/utilities/ipc.ts +++ b/src/server/session/utilities/ipc.ts @@ -11,7 +11,7 @@ export interface Message<T = any> { args: T; } type InternalMessage<T = any> = Message<T> & { metadata: any }; -export type MessageHandler<A = any, T extends Message<A> = Message<A>> = (message: T) => any | Promise<any>; +export type MessageHandler<T = any> = (message: T) => any | Promise<any>; export class PromisifiedIPCManager { private readonly target: IPCTarget; @@ -22,27 +22,22 @@ export class PromisifiedIPCManager { this.target = target; } - public emit = async (name: string, args?: any, awaitResponse = false): Promise<Error | undefined> => { - if (!this.target.send) { - return new Error("Cannot dispatch when send is undefined."); - } - if (awaitResponse) { - return new Promise(resolve => { - const messageId = Utils.GenerateGuid(); - const metadata: any = {}; - metadata[this.ipc_id] = messageId; - const responseHandler: MessageHandler<any, InternalMessage> = ({ metadata, args }) => { - if (metadata[this.is_response] && metadata[this.ipc_id] === messageId) { - this.target.removeListener("message", responseHandler); - resolve(args?.error as Error | undefined); - } - }; - this.target.addListener("message", responseHandler); - this.target.send?.({ name, args, metadata }); - }); - } else { - this.target.send?.({ name, args }); - } + public emit = async (name: string, args?: any) => this.target.send?.({ name, args }); + + public emitPromise = async (name: string, args?: any) => { + return new Promise(resolve => { + const messageId = Utils.GenerateGuid(); + const metadata: any = {}; + metadata[this.ipc_id] = messageId; + const responseHandler: MessageHandler<any> = ({ metadata, args }) => { + if (metadata[this.is_response] && metadata[this.ipc_id] === messageId) { + this.target.removeListener("message", responseHandler); + resolve(args?.error as Error | undefined); + } + }; + this.target.addListener("message", responseHandler); + this.target.send?.({ name, args, metadata }); + }); } public setRouter = (router: Router) => { |