@jayesol/jayeson.lib.delivery 2.0.7-beta.0 → 2.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,248 +1,248 @@
1
- var util = require("./util")
2
- var _c = util._c
3
- var _ = require("underscore")
4
- var DeliveryStack = require("./DeliveryStack")
5
- var IMessageGroup = DeliveryStack.IMessageGroup
6
- var IMessageClass = DeliveryStack.IMessageClass
7
-
8
- /**
9
- * This javascript file define some default message group and classes
10
- * That is commonly used
11
- */
12
-
13
- /****************** MESSAGE CLASS DEFINITIONS *******************/
14
- /**
15
- * Empty Message Class
16
- */
17
- function EmptyMessageClass(group, id) {
18
- IMessageClass.call(this, group, id, String);
19
- this.inH = {
20
- unpack: function (wrapper) { // this unpack method convert undefined to "" for easy handling at processor / hook
21
- if (wrapper.message === undefined || wrapper.message === null) wrapper.message = "";
22
- }
23
- };
24
-
25
- this.outH = {
26
- pack: function (wrapper) {
27
- // in whatever case, the message sent in an empty message should
28
- // be encoded into an empty byte array, regardless of what the user set
29
- wrapper.message = [];
30
- }
31
- }
32
- }
33
- _c(EmptyMessageClass, {
34
- inHandlers: function () { // in handlers of the empty message class does nothing
35
- return [this.inH];
36
- },
37
-
38
- outHandlers: function () {
39
- return [this.outH];
40
- }
41
- }, IMessageClass);
42
-
43
- /**
44
- * String message class, decode (encode) from byte[] (string) to string (byte[])
45
- * @param group
46
- * @param id
47
- */
48
- function StringMessageClass(group, id) {
49
- EmptyMessageClass.call(this, group, id);
50
- this.inH = {
51
- unpack: function (wrapper) {
52
- var msg = "";
53
- for (var i = 0; i < wrapper.message.length; i++) {
54
- msg += String.fromCharCode(wrapper.message[i]);
55
- }
56
- wrapper.message = msg;
57
- }
58
- }
59
-
60
- this.outH = {
61
- pack: function (wrapper) {
62
- var result = [];
63
- for (var i = 0; i < wrapper.message.length; i++) {
64
- result.push(wrapper.message.charCodeAt(i));
65
- }
66
- wrapper.message = result;
67
- }
68
- }
69
- }
70
- _c(StringMessageClass, {
71
-
72
- outHandlers: function () {
73
- return [this.outH];
74
- }
75
-
76
- }, EmptyMessageClass);
77
-
78
- function JSonMessageClass(group, id, instanceClass) {
79
- IMessageClass.call(this, group, id, String);
80
-
81
- this.inH = {
82
- unpack: function (wrapper) {
83
- // convert from byte[] to json object
84
- var msg = "";
85
- for (var i = 0; i < wrapper.message.length; i++) {
86
- msg += String.fromCharCode(wrapper.message[i]);
87
- }
88
- var obj = JSON.parse(msg); // convert into a message
89
- var actual = new instanceClass();
90
- _.extend(actual, obj); // copy data into the object of the correct type
91
-
92
- wrapper.message = actual;
93
- }
94
- };
95
-
96
- this.outH = {
97
- pack: function (wrapper) {
98
- var msg = JSON.stringify(wrapper.message); // convert original message to string
99
- var result = [];
100
- for (var i = 0; i < msg.length; i++) {
101
- result.push(msg.charCodeAt(i));
102
- }
103
-
104
- wrapper.message = result; // update wrapper
105
- }
106
- };
107
- }
108
- _c(JSonMessageClass, {
109
- inHandlers: function () {
110
- return [this.inH];
111
- },
112
-
113
- outHandlers: function () {
114
- return [this.outH];
115
- }
116
- }, IMessageClass);
117
-
118
- /******************** CORE MESSAGE GROUP DEFINITIONS ****************/
119
-
120
- function GenericMessageGroup() {
121
- IMessageGroup.call(this, 6);
122
- this._classes = [
123
- new StringMessageClass(this, 0)
124
- ];
125
- };
126
- _c(GenericMessageGroup, {}, IMessageGroup);
127
- GenericMessageGroup = new GenericMessageGroup(); // singleton
128
-
129
- function KeepAliveMessageGroup() {
130
- IMessageGroup.call(this, 4);
131
- this._classes = [
132
- new EmptyMessageClass(this, 0)
133
- ];
134
- };
135
- _c(KeepAliveMessageGroup, {}, IMessageGroup);
136
- KeepAliveMessageGroup = new KeepAliveMessageGroup(); // singleton
137
-
138
- /**************** AUTH MESSAGE GROUP DEFINITION **********************/
139
-
140
- // bean definition for the general response
141
- function GeneralResponse(status, message) {
142
- this.status = status;
143
- this.message = message;
144
- }
145
- _c(GeneralResponse, {
146
- getStatus: function () { return this.status; },
147
- getMessage: function () { return this.message; }
148
- });
149
-
150
- //bean definition for the ticket renew
151
- function TicketRenew(clientId, newTicket) {
152
- this.clientId = clientId;
153
- this.newTicket = newTicket;
154
- }
155
- _c(GeneralResponse, {
156
- getClientId: function () { return this.clientId; },
157
- getNewTicket: function () { return this.newTicket; }
158
- });
159
-
160
- function AuthGroup() {
161
- IMessageGroup.call(this, 5);
162
-
163
- this.GENERAL_RESPONSE = new JSonMessageClass(this, 0, GeneralResponse);
164
- this.HTTP_AUTH = new EmptyMessageClass(this, 1);
165
- this.TCP_AUTH = new EmptyMessageClass(this, 2);
166
- this.TICKET_RENEW = new JSonMessageClass(this, 3, TicketRenew);
167
- this.STRING = new StringMessageClass(this, 4);
168
-
169
- this._classes = [
170
- this.GENERAL_RESPONSE,
171
- // this is corresponding HTTP_AUTH_CONTENT, since we are sending auth content
172
- // using XHR we don't need to define any handlers for this message class
173
- this.HTTP_AUTH,
174
- // this correspond to tcp auth content. We are not sending auth content through tcp,
175
- // so ignore this
176
- this.TCP_AUTH,
177
- // ticket renew
178
- this.TICKET_RENEW,
179
- // generic string
180
- this.STRING
181
-
182
-
183
- ];
184
- }
185
- _c(AuthGroup, {}, IMessageGroup);
186
- AuthGroup = new AuthGroup(); // singleton
187
-
188
- /**************** STREAM REGISTRATION GROUP **********************/
189
- function StreamRegistryRequest(messageGroup, streams, requestType) {
190
- this.messageGroup = messageGroup;
191
- this.streams = streams;
192
- this.requestType = requestType;
193
- }
194
- _.extend(StreamRegistryRequest, {
195
- REGISTRATION: 0,
196
- CONSUMPTION: 1,
197
- DEREGISTRATION: 2
198
- });
199
-
200
- /**
201
- * It is guaranteed by the stream registry service that if I sent a registration message
202
- * for Group A Stream X, Y, Z, the response will contains the information for all the stream X, Y, Z.
203
- *
204
- * @param: messageGroup - the message group i'm registered for
205
- * @param: streams - a map from stream name to the registration status, can be SUCCESS (4) or FAILED (5)
206
- * @param: responseType - type of the response, can be REGISTRATION, CONSUMPTION, DEREGISTRATION
207
- *
208
- */
209
- function StreamRegistryResponse(messageGroup, streams, responseType) {
210
- this.messageGroup = messageGroup;
211
- this.streams = streams;
212
- this.responseType = responseType;
213
- }
214
- _.extend(StreamRegistryResponse, {
215
- REGISTRATION: 0,
216
- CONSUMPTION: 1,
217
- STOP_CONSUMPTION: 6,
218
- DEREGISTRATION: 2,
219
- GENERAL: 3,
220
-
221
- SUCCESS: 4,
222
- FAILED: 5,
223
- DEREGISTRATION_TIMEOUT: 7
224
- });
225
-
226
- function StreamRegistryMessageGroup() {
227
- IMessageGroup.call(this, 2);
228
-
229
- this.REQUEST = new JSonMessageClass(this, 0, StreamRegistryRequest);
230
- this.RESPONSE = new JSonMessageClass(this, 1, StreamRegistryResponse);
231
-
232
- this._classes = [this.REQUEST, this.RESPONSE];
233
- }
234
- _c(StreamRegistryMessageGroup, {}, IMessageGroup); // inherit from IMessageGroup
235
- StreamRegistryMessageGroup = new StreamRegistryMessageGroup(); // singleton
236
-
237
- module.exports = exports = {
238
- StreamRegistryMessageGroup: StreamRegistryMessageGroup,
239
- EmptyMessageClass: EmptyMessageClass,
240
- StringMessageClass: StringMessageClass,
241
- JSonMessageClass: JSonMessageClass,
242
- StreamRegistryRequest: StreamRegistryRequest,
243
- StreamRegistryResponse: StreamRegistryResponse,
244
- AuthGroup: AuthGroup,
245
- GenericMessageGroup: GenericMessageGroup,
246
- KeepAliveMessageGroup: KeepAliveMessageGroup,
247
- TicketRenew: TicketRenew
248
- }
1
+ var util = require("./util")
2
+ var _c = util._c
3
+ var _ = require("underscore")
4
+ var DeliveryStack = require("./DeliveryStack")
5
+ var IMessageGroup = DeliveryStack.IMessageGroup
6
+ var IMessageClass = DeliveryStack.IMessageClass
7
+
8
+ /**
9
+ * This javascript file define some default message group and classes
10
+ * That is commonly used
11
+ */
12
+
13
+ /****************** MESSAGE CLASS DEFINITIONS *******************/
14
+ /**
15
+ * Empty Message Class
16
+ */
17
+ function EmptyMessageClass(group, id) {
18
+ IMessageClass.call(this, group, id, String);
19
+ this.inH = {
20
+ unpack: function (wrapper) { // this unpack method convert undefined to "" for easy handling at processor / hook
21
+ if (wrapper.message === undefined || wrapper.message === null) wrapper.message = "";
22
+ }
23
+ };
24
+
25
+ this.outH = {
26
+ pack: function (wrapper) {
27
+ // in whatever case, the message sent in an empty message should
28
+ // be encoded into an empty byte array, regardless of what the user set
29
+ wrapper.message = [];
30
+ }
31
+ }
32
+ }
33
+ _c(EmptyMessageClass, {
34
+ inHandlers: function () { // in handlers of the empty message class does nothing
35
+ return [this.inH];
36
+ },
37
+
38
+ outHandlers: function () {
39
+ return [this.outH];
40
+ }
41
+ }, IMessageClass);
42
+
43
+ /**
44
+ * String message class, decode (encode) from byte[] (string) to string (byte[])
45
+ * @param group
46
+ * @param id
47
+ */
48
+ function StringMessageClass(group, id) {
49
+ EmptyMessageClass.call(this, group, id);
50
+ this.inH = {
51
+ unpack: function (wrapper) {
52
+ var msg = "";
53
+ for (var i = 0; i < wrapper.message.length; i++) {
54
+ msg += String.fromCharCode(wrapper.message[i]);
55
+ }
56
+ wrapper.message = msg;
57
+ }
58
+ }
59
+
60
+ this.outH = {
61
+ pack: function (wrapper) {
62
+ var result = [];
63
+ for (var i = 0; i < wrapper.message.length; i++) {
64
+ result.push(wrapper.message.charCodeAt(i));
65
+ }
66
+ wrapper.message = result;
67
+ }
68
+ }
69
+ }
70
+ _c(StringMessageClass, {
71
+
72
+ outHandlers: function () {
73
+ return [this.outH];
74
+ }
75
+
76
+ }, EmptyMessageClass);
77
+
78
+ function JSonMessageClass(group, id, instanceClass) {
79
+ IMessageClass.call(this, group, id, String);
80
+
81
+ this.inH = {
82
+ unpack: function (wrapper) {
83
+ // convert from byte[] to json object
84
+ var msg = "";
85
+ for (var i = 0; i < wrapper.message.length; i++) {
86
+ msg += String.fromCharCode(wrapper.message[i]);
87
+ }
88
+ var obj = JSON.parse(msg); // convert into a message
89
+ var actual = new instanceClass();
90
+ _.extend(actual, obj); // copy data into the object of the correct type
91
+
92
+ wrapper.message = actual;
93
+ }
94
+ };
95
+
96
+ this.outH = {
97
+ pack: function (wrapper) {
98
+ var msg = JSON.stringify(wrapper.message); // convert original message to string
99
+ var result = [];
100
+ for (var i = 0; i < msg.length; i++) {
101
+ result.push(msg.charCodeAt(i));
102
+ }
103
+
104
+ wrapper.message = result; // update wrapper
105
+ }
106
+ };
107
+ }
108
+ _c(JSonMessageClass, {
109
+ inHandlers: function () {
110
+ return [this.inH];
111
+ },
112
+
113
+ outHandlers: function () {
114
+ return [this.outH];
115
+ }
116
+ }, IMessageClass);
117
+
118
+ /******************** CORE MESSAGE GROUP DEFINITIONS ****************/
119
+
120
+ function GenericMessageGroup() {
121
+ IMessageGroup.call(this, 6);
122
+ this._classes = [
123
+ new StringMessageClass(this, 0)
124
+ ];
125
+ };
126
+ _c(GenericMessageGroup, {}, IMessageGroup);
127
+ GenericMessageGroup = new GenericMessageGroup(); // singleton
128
+
129
+ function KeepAliveMessageGroup() {
130
+ IMessageGroup.call(this, 4);
131
+ this._classes = [
132
+ new EmptyMessageClass(this, 0)
133
+ ];
134
+ };
135
+ _c(KeepAliveMessageGroup, {}, IMessageGroup);
136
+ KeepAliveMessageGroup = new KeepAliveMessageGroup(); // singleton
137
+
138
+ /**************** AUTH MESSAGE GROUP DEFINITION **********************/
139
+
140
+ // bean definition for the general response
141
+ function GeneralResponse(status, message) {
142
+ this.status = status;
143
+ this.message = message;
144
+ }
145
+ _c(GeneralResponse, {
146
+ getStatus: function () { return this.status; },
147
+ getMessage: function () { return this.message; }
148
+ });
149
+
150
+ //bean definition for the ticket renew
151
+ function TicketRenew(clientId, newTicket) {
152
+ this.clientId = clientId;
153
+ this.newTicket = newTicket;
154
+ }
155
+ _c(GeneralResponse, {
156
+ getClientId: function () { return this.clientId; },
157
+ getNewTicket: function () { return this.newTicket; }
158
+ });
159
+
160
+ function AuthGroup() {
161
+ IMessageGroup.call(this, 5);
162
+
163
+ this.GENERAL_RESPONSE = new JSonMessageClass(this, 0, GeneralResponse);
164
+ this.HTTP_AUTH = new EmptyMessageClass(this, 1);
165
+ this.TCP_AUTH = new EmptyMessageClass(this, 2);
166
+ this.TICKET_RENEW = new JSonMessageClass(this, 3, TicketRenew);
167
+ this.STRING = new StringMessageClass(this, 4);
168
+
169
+ this._classes = [
170
+ this.GENERAL_RESPONSE,
171
+ // this is corresponding HTTP_AUTH_CONTENT, since we are sending auth content
172
+ // using XHR we don't need to define any handlers for this message class
173
+ this.HTTP_AUTH,
174
+ // this correspond to tcp auth content. We are not sending auth content through tcp,
175
+ // so ignore this
176
+ this.TCP_AUTH,
177
+ // ticket renew
178
+ this.TICKET_RENEW,
179
+ // generic string
180
+ this.STRING
181
+
182
+
183
+ ];
184
+ }
185
+ _c(AuthGroup, {}, IMessageGroup);
186
+ AuthGroup = new AuthGroup(); // singleton
187
+
188
+ /**************** STREAM REGISTRATION GROUP **********************/
189
+ function StreamRegistryRequest(messageGroup, streams, requestType) {
190
+ this.messageGroup = messageGroup;
191
+ this.streams = streams;
192
+ this.requestType = requestType;
193
+ }
194
+ _.extend(StreamRegistryRequest, {
195
+ REGISTRATION: 0,
196
+ CONSUMPTION: 1,
197
+ DEREGISTRATION: 2
198
+ });
199
+
200
+ /**
201
+ * It is guaranteed by the stream registry service that if I sent a registration message
202
+ * for Group A Stream X, Y, Z, the response will contains the information for all the stream X, Y, Z.
203
+ *
204
+ * @param: messageGroup - the message group i'm registered for
205
+ * @param: streams - a map from stream name to the registration status, can be SUCCESS (4) or FAILED (5)
206
+ * @param: responseType - type of the response, can be REGISTRATION, CONSUMPTION, DEREGISTRATION
207
+ *
208
+ */
209
+ function StreamRegistryResponse(messageGroup, streams, responseType) {
210
+ this.messageGroup = messageGroup;
211
+ this.streams = streams;
212
+ this.responseType = responseType;
213
+ }
214
+ _.extend(StreamRegistryResponse, {
215
+ REGISTRATION: 0,
216
+ CONSUMPTION: 1,
217
+ STOP_CONSUMPTION: 6,
218
+ DEREGISTRATION: 2,
219
+ GENERAL: 3,
220
+
221
+ SUCCESS: 4,
222
+ FAILED: 5,
223
+ DEREGISTRATION_TIMEOUT: 7
224
+ });
225
+
226
+ function StreamRegistryMessageGroup() {
227
+ IMessageGroup.call(this, 2);
228
+
229
+ this.REQUEST = new JSonMessageClass(this, 0, StreamRegistryRequest);
230
+ this.RESPONSE = new JSonMessageClass(this, 1, StreamRegistryResponse);
231
+
232
+ this._classes = [this.REQUEST, this.RESPONSE];
233
+ }
234
+ _c(StreamRegistryMessageGroup, {}, IMessageGroup); // inherit from IMessageGroup
235
+ StreamRegistryMessageGroup = new StreamRegistryMessageGroup(); // singleton
236
+
237
+ module.exports = exports = {
238
+ StreamRegistryMessageGroup: StreamRegistryMessageGroup,
239
+ EmptyMessageClass: EmptyMessageClass,
240
+ StringMessageClass: StringMessageClass,
241
+ JSonMessageClass: JSonMessageClass,
242
+ StreamRegistryRequest: StreamRegistryRequest,
243
+ StreamRegistryResponse: StreamRegistryResponse,
244
+ AuthGroup: AuthGroup,
245
+ GenericMessageGroup: GenericMessageGroup,
246
+ KeepAliveMessageGroup: KeepAliveMessageGroup,
247
+ TicketRenew: TicketRenew
248
+ }