aboutsummaryrefslogtreecommitdiff
path: root/src/server/session/utilities
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/session/utilities')
-rw-r--r--src/server/session/utilities/ipc.ts39
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) => {