@moddable/pebbleproxy 0.1.2 → 0.1.3

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/proxy.js +52 -10
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moddable/pebbleproxy",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Proxy network protocols for PebbleOS",
5
5
  "license": "LGPLv3",
6
6
  "main": "proxy.js",
package/proxy.js CHANGED
@@ -73,7 +73,7 @@ function appMessageReceived(e) {
73
73
  function readyReceived(e) {
74
74
  if (state.log)
75
75
  console.log("readyReceived")
76
- Pebble.sendAppMessage({
76
+ sendAppMessage({
77
77
  [READY_MESSAGE]: PROXY_VERSION
78
78
  });
79
79
  }
@@ -199,7 +199,7 @@ function httpMessage(id, e) {
199
199
  }
200
200
  request.xhr.onerror = function () {
201
201
  console.log("ON error!!!!")
202
- Pebble.sendAppMessage({
202
+ sendAppMessage({
203
203
  [HTTP_BASE + 1]: request.id,
204
204
  [HTTP_BASE + 9]: -1 // done. failure.
205
205
  });
@@ -266,7 +266,7 @@ function wsMessage(id, e) {
266
266
  request.state = "connected";
267
267
  request.messages = [];
268
268
  request.messages.sending = false;
269
- Pebble.sendAppMessage({
269
+ sendAppMessage({
270
270
  [WS_BASE + 1]: request.id,
271
271
  [WS_BASE + 2]: 0 // connected. success.
272
272
  });
@@ -275,7 +275,7 @@ function wsMessage(id, e) {
275
275
  if (state.log)
276
276
  console.log("websocket connection failed");
277
277
  request.state = "error";
278
- Pebble.sendAppMessage({
278
+ sendAppMessage({
279
279
  [WS_BASE + 1]: request.id,
280
280
  [WS_BASE + 3]: -1 // disconnected error.
281
281
  });
@@ -391,6 +391,47 @@ function wsMessage(id, e) {
391
391
  }
392
392
  }
393
393
 
394
+ const sendQueue = [];
395
+ let sending = false;
396
+
397
+ function sendAppMessageSuccess() {
398
+ // console.log("sendAppMessageSuccess");
399
+ sending = false;
400
+ const sent = sendQueue.shift();
401
+ if (sent.success)
402
+ sent.success();
403
+ if (!sending && sendQueue.length) {
404
+ // console.log("Send from success");
405
+ sending = true;
406
+ Pebble.sendAppMessage(sendQueue[0].message, sendAppMessageSuccess, sendAppMessageFailure);
407
+ }
408
+ }
409
+
410
+ function sendAppMessageFailure() {
411
+ // console.log("sendAppMessageFailure");
412
+ sending = false;
413
+ const sent = sendQueue.shift();
414
+ if (sent.failure)
415
+ sent.failure();
416
+ if (!sending && sendQueue.length) {
417
+ // console.log("Send from failure");
418
+ sending = true;
419
+ Pebble.sendAppMessage(sendQueue[0].message, sendAppMessageSuccess, sendAppMessageFailure);
420
+ }
421
+ }
422
+
423
+ function sendAppMessage(message, success, failure) {
424
+ // console.log("sendAppMessage");
425
+ sendQueue.push({message, success, failure});
426
+ if (sending)
427
+ return;
428
+
429
+ // console.log("Send initial");
430
+ sending = true;
431
+ Pebble.sendAppMessage(sendQueue[0].message, sendAppMessageSuccess, sendAppMessageFailure);
432
+ }
433
+
434
+
394
435
  function sendRequestMessage(request) {
395
436
  if ("http" === request.kind)
396
437
  sendRequestMessageHTTP(request);
@@ -402,7 +443,7 @@ function sendRequestMessage(request) {
402
443
 
403
444
  function sendRequestMessageHTTP(request)
404
445
  {
405
- Pebble.sendAppMessage(
446
+ sendAppMessage(
406
447
  request.messages.shift(),
407
448
  function () {
408
449
  if (request.messages.length)
@@ -411,9 +452,9 @@ function sendRequestMessageHTTP(request)
411
452
  request.state = "done";
412
453
  },
413
454
  function () {
414
- console.log("message send FAILED");
455
+ console.log("http message send FAILED");
415
456
 
416
- Pebble.sendAppMessage({
457
+ sendAppMessage({
417
458
  [HTTP_BASE + 1]: request.id,
418
459
  [HTTP_BASE + 9]: -1 // done. failure.
419
460
  });
@@ -422,7 +463,7 @@ function sendRequestMessageHTTP(request)
422
463
  }
423
464
 
424
465
  function sendRequestMessageWS(request) {
425
- Pebble.sendAppMessage(
466
+ sendAppMessage(
426
467
  request.messages.shift(),
427
468
  function () {
428
469
  if (request.messages.length)
@@ -431,9 +472,9 @@ function sendRequestMessageWS(request) {
431
472
  request.messages.sending = false;
432
473
  },
433
474
  function (e) {
434
- console.log("message send FAILED " + JSON.stringify(e));
475
+ console.log("ws message send FAILED " + JSON.stringify(e));
435
476
 
436
- Pebble.sendAppMessage({
477
+ sendAppMessage({
437
478
  [WS_BASE + 1]: request.id,
438
479
  [WS_BASE + 3]: -1 // done. failure.
439
480
  });
@@ -486,6 +527,7 @@ function stringToArray(str) {
486
527
  const state = {
487
528
  appMessageReceived,
488
529
  readyReceived,
530
+ sendAppMessage,
489
531
  log: false
490
532
  };
491
533