aboutsummaryrefslogtreecommitdiff
path: root/src/Utils.ts
diff options
context:
space:
mode:
authorbob <bcz@cs.brown.edu>2019-04-03 11:45:15 -0400
committerbob <bcz@cs.brown.edu>2019-04-03 11:45:15 -0400
commitbb7d5a26ec68f283c5adb42d4d6554253de7176f (patch)
tree7efa817102ba54e916601611f608dd4bd761a437 /src/Utils.ts
parent43a0768690caa89c606dd5d296d3cc8825c1702b (diff)
parentc406c8d123ce0aa9d63fb8a4dd90adfe83d2889d (diff)
merged with master
Diffstat (limited to 'src/Utils.ts')
-rw-r--r--src/Utils.ts46
1 files changed, 40 insertions, 6 deletions
diff --git a/src/Utils.ts b/src/Utils.ts
index d4b7da52c..a5d9bd0ca 100644
--- a/src/Utils.ts
+++ b/src/Utils.ts
@@ -37,19 +37,53 @@ export class Utils {
document.body.removeChild(textArea);
}
+ public static loggingEnabled: Boolean = false;
+ public static logFilter: number | undefined = undefined;
+ private static log(prefix: string, messageName: string, message: any, receiving: boolean) {
+ if (!this.loggingEnabled) {
+ return;
+ }
+ message = message || {};
+ if (this.logFilter !== undefined && this.logFilter !== message.type) {
+ return;
+ }
+ let idString = (message._id || message.id || "").padStart(36, ' ');
+ prefix = prefix.padEnd(16, ' ');
+ console.log(`${prefix}: ${idString}, ${receiving ? 'receiving' : 'sending'} ${messageName} with data ${JSON.stringify(message)}`);
+ }
+ private static loggingCallback(prefix: string, func: (args: any) => any, messageName: string) {
+ return (args: any) => {
+ this.log(prefix, messageName, args, true);
+ func(args);
+ }
+ };
+
public static Emit<T>(socket: Socket | SocketIOClient.Socket, message: Message<T>, args: T) {
+ this.log("Emit", message.Name, args, false);
socket.emit(message.Message, args);
}
- public static EmitCallback<T>(socket: Socket | SocketIOClient.Socket, message: Message<T>, args: T, fn: (args: any) => any) {
- socket.emit(message.Message, args, fn);
+ public static EmitCallback<T>(socket: Socket | SocketIOClient.Socket, message: Message<T>, args: T): Promise<any>;
+ public static EmitCallback<T>(socket: Socket | SocketIOClient.Socket, message: Message<T>, args: T, fn: (args: any) => any): void;
+ public static EmitCallback<T>(socket: Socket | SocketIOClient.Socket, message: Message<T>, args: T, fn?: (args: any) => any): void | Promise<any> {
+ this.log("Emit", message.Name, args, false);
+ if (fn) {
+ socket.emit(message.Message, args, this.loggingCallback('Receiving', fn, message.Name));
+ } else {
+ return new Promise<any>(res => socket.emit(message.Message, args, this.loggingCallback('Receiving', res, message.Name)));
+ }
}
- public static AddServerHandler<T>(socket: Socket, message: Message<T>, handler: (args: T) => any) {
- socket.on(message.Message, handler);
+ public static AddServerHandler<T>(socket: Socket | SocketIOClient.Socket, message: Message<T>, handler: (args: T) => any) {
+ socket.on(message.Message, this.loggingCallback('Incoming', handler, message.Name));
}
public static AddServerHandlerCallback<T>(socket: Socket, message: Message<T>, handler: (args: [T, (res: any) => any]) => any) {
- socket.on(message.Message, (arg: T, fn: (res: any) => any) => handler([arg, fn]));
+ socket.on(message.Message, (arg: T, fn: (res: any) => any) => {
+ this.log('S receiving', message.Name, arg, true);
+ handler([arg, this.loggingCallback('S sending', fn, message.Name)])
+ });
}
-} \ No newline at end of file
+}
+
+export type Without<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>; \ No newline at end of file