aboutsummaryrefslogtreecommitdiff
path: root/src/msg.js
diff options
context:
space:
mode:
authorDeterminant <ted.sybil@gmail.com>2019-02-03 01:14:45 -0500
committerDeterminant <ted.sybil@gmail.com>2019-02-03 01:14:45 -0500
commit5552d53304a26f53172e1cc0d0f86e01131eaadd (patch)
tree7276c23d174ac84c73de595b16ce841ae7b36f22 /src/msg.js
parent580990a5eb4a79892c48e3a3fce3386fe80e6cc2 (diff)
use Msg objects
Diffstat (limited to 'src/msg.js')
-rw-r--r--src/msg.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/msg.js b/src/msg.js
new file mode 100644
index 0000000..c0aaf11
--- /dev/null
+++ b/src/msg.js
@@ -0,0 +1,50 @@
+const _updatePatterns = "updatePatterns";
+const _getPatterns = "getPatterns";
+const _updateCalendars = "updateCalendars";
+const _getCalendars = "getCalendars";
+const _getCalEvents = "getCalEvents";
+
+export const msgType = Object.freeze({
+ updatePatterns: Symbol(_updatePatterns),
+ getPatterns: Symbol(_getPatterns),
+ updateCalendars: Symbol(_updateCalendars),
+ getCalendars: Symbol(_getCalendars),
+ getCalEvents: Symbol(_getCalEvents),
+});
+
+function stringifyMsgType(mt) {
+ switch (mt) {
+ case msgType.updatePatterns: return _updatePatterns;
+ case msgType.getPatterns: return _getPatterns;
+ case msgType.updateCalendars: return _updateCalendars;
+ case msgType.getCalendars: return _getCalendars;
+ case msgType.getCalEvents: return _getCalEvents;
+ }
+}
+
+function parseMsgType(s) {
+ switch(s) {
+ case _updatePatterns: return msgType.updatePatterns;
+ case _getPatterns: return msgType.getPatterns;
+ case _updateCalendars: return msgType.updateCalendars;
+ case _getCalendars: return msgType.getCalendars;
+ case _getCalEvents: return msgType.getCalEvents;
+ }
+}
+
+export class Msg {
+ constructor(id, type, data) {
+ this.id = id;
+ this.type = type;
+ this.data = data;
+ }
+ genResp(data) { return new Msg(this.id, this.type, data); }
+ deflate() {
+ return {
+ id: this.id,
+ type: stringifyMsgType(this.type),
+ data: this.data
+ }
+ }
+ static inflate = obj => new Msg(obj.id, parseMsgType(obj.type), obj.data);
+}