aboutsummaryrefslogtreecommitdiff
path: root/src/server/Message.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/Message.ts')
-rw-r--r--src/server/Message.ts35
1 files changed, 32 insertions, 3 deletions
diff --git a/src/server/Message.ts b/src/server/Message.ts
index d5b9b4612..15329249d 100644
--- a/src/server/Message.ts
+++ b/src/server/Message.ts
@@ -1,8 +1,10 @@
import { Utils } from "../Utils";
+import { FIELD_ID, Field } from "../fields/Field";
-export class Message {
+export class Message<T> {
private name: string;
private guid: string;
+ readonly ArgsCtor: new (...args: any) => T;
get Name(): string {
return this.name;
@@ -12,9 +14,10 @@ export class Message {
return this.guid
}
- constructor(name: string) {
+ constructor(name: string, ctor: new (...args: any) => T) {
this.name = name;
this.guid = Utils.GenerateDeterministicGuid(name)
+ this.ArgsCtor = ctor;
}
GetValue() {
@@ -22,6 +25,32 @@ export class Message {
}
}
+class TestMessageArgs {
+ hello: string = "";
+}
+
+export class SetFieldArgs {
+ field: string;
+ value: any;
+
+ constructor(f: string, v: any) {
+ this.field = f
+ this.value = v
+ }
+}
+
+export class GetFieldArgs {
+ field: string;
+
+ constructor(f: string) {
+ this.field = f
+ }
+}
+
export namespace MessageStore {
- export const Handshake = new Message("Handshake");
+ export const Foo = new Message("Foo", String);
+ export const Bar = new Message("Bar", String);
+ export const AddDocument = new Message("Add Document", TestMessageArgs);
+ export const SetField = new Message("Set Field", SetFieldArgs)
+ export const GetField = new Message("Get Field", GetFieldArgs)
} \ No newline at end of file