@supraio/client-daemon-js 0.0.1-master.11 → 0.0.1-master.12

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.
@@ -22163,7 +22163,7 @@ $packages["github.com/gopherjs/gopherjs/nosync"] = (function() {
22163
22163
  return $pkg;
22164
22164
  })();
22165
22165
  $packages["time"] = (function() {
22166
- var $pkg = {}, $init, errors, js, nosync, runtime, syscall, js$1, runtimeTimer, ParseError, Timer, Time, Month, Weekday, Duration, Location, zone, zoneTrans, ruleKind, rule, sliceType, sliceType$1, ptrType, sliceType$2, structType, arrayType, sliceType$3, arrayType$1, arrayType$2, ptrType$2, chanType, funcType, arrayType$3, funcType$1, ptrType$3, ptrType$4, ptrType$5, chanType$1, ptrType$7, zoneSources, std0x, longDayNames, shortDayNames, shortMonthNames, longMonthNames, atoiError, errBad, errLeadingInt, unitMap, daysBefore, startNano, utcLoc, utcLoc$24ptr, localLoc, localLoc$24ptr, localOnce, errLocation, badData, x, init, runtimeNano, now, Sleep, startTimer, stopTimer, modTimer, resetTimer, initLocal, itoa, startsWithLowerCase, nextStdChunk, match, lookup, appendInt, atoi, formatNano, quote, isDigit, getnum, getnum3, cutspace, skip, Parse, ParseInLocation, parse, parseTimeZone, parseGMT, parseSignedOffset, parseNanoseconds, leadingInt, leadingFraction, ParseDuration, when, NewTimer, sendTime, After, AfterFunc, goFunc, absWeekday, absClock, fmtFrac, fmtInt, lessThanHalf, Until, absDate, daysIn, daysSinceEpoch, Now, unixTime, Unix, isLeap, norm, Date, div, FixedZone, tzset, tzsetName, tzsetOffset, tzsetRule, tzsetNum, tzruleTime;
22166
+ var $pkg = {}, $init, errors, js, nosync, runtime, syscall, js$1, runtimeTimer, ParseError, Timer, Time, Month, Weekday, Duration, Location, zone, zoneTrans, ruleKind, rule, sliceType, sliceType$1, ptrType, sliceType$2, structType, arrayType, sliceType$3, arrayType$1, arrayType$2, ptrType$2, chanType, funcType, arrayType$3, funcType$1, ptrType$3, ptrType$4, ptrType$5, chanType$1, ptrType$7, zoneSources, std0x, longDayNames, shortDayNames, shortMonthNames, longMonthNames, atoiError, errBad, errLeadingInt, unitMap, daysBefore, startNano, utcLoc, utcLoc$24ptr, localLoc, localLoc$24ptr, localOnce, errLocation, badData, x, init, runtimeNano, now, Sleep, startTimer, stopTimer, modTimer, resetTimer, initLocal, itoa, startsWithLowerCase, nextStdChunk, match, lookup, appendInt, atoi, formatNano, quote, isDigit, getnum, getnum3, cutspace, skip, Parse, ParseInLocation, parse, parseTimeZone, parseGMT, parseSignedOffset, parseNanoseconds, leadingInt, leadingFraction, ParseDuration, when, NewTimer, sendTime, After, AfterFunc, goFunc, absWeekday, absClock, fmtFrac, fmtInt, lessThanHalf, Since, Until, absDate, daysIn, daysSinceEpoch, Now, unixTime, Unix, isLeap, norm, Date, div, FixedZone, tzset, tzsetName, tzsetOffset, tzsetRule, tzsetNum, tzruleTime;
22167
22167
  errors = $packages["errors"];
22168
22168
  js = $packages["github.com/gopherjs/gopherjs/js"];
22169
22169
  nosync = $packages["github.com/gopherjs/gopherjs/nosync"];
@@ -24618,6 +24618,17 @@ $packages["time"] = (function() {
24618
24618
  }
24619
24619
  };
24620
24620
  Time.prototype.Sub = function(u) { return this.$val.Sub(u); };
24621
+ Since = function(t) {
24622
+ var now$1, t, x$1, x$2, x$3;
24623
+ now$1 = new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil);
24624
+ if (!((x$1 = (x$2 = t.wall, new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) {
24625
+ Time.copy(now$1, new Time.ptr(new $Uint64(2147483648, 0), (x$3 = runtimeNano(), new $Int64(x$3.$high - startNano.$high, x$3.$low - startNano.$low)), ptrType$2.nil));
24626
+ } else {
24627
+ Time.copy(now$1, Now());
24628
+ }
24629
+ return $clone(now$1, Time).Sub($clone(t, Time));
24630
+ };
24631
+ $pkg.Since = Since;
24621
24632
  Until = function(t) {
24622
24633
  var now$1, t, x$1, x$2, x$3;
24623
24634
  now$1 = new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil);
@@ -131811,7 +131822,7 @@ $packages["nhooyr.io/websocket"] = (function() {
131811
131822
  return $pkg;
131812
131823
  })();
131813
131824
  $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
131814
- var $pkg = {}, $init, context, errs, websocket, time, ReaderWriterCloser, Driver, JsWebsocketConn, sliceType, sliceType$1, sliceType$2, ptrType, ptrType$1, connects, Create, init, ConnectJsWebsocket;
131825
+ var $pkg = {}, $init, context, errs, websocket, time, ReaderWriterCloser, Driver, JsWebsocketConn, sliceType, sliceType$1, sliceType$2, ptrType, ptrType$1, connects, maxPacketSizes, Create, GetMaxPacketSize, init, ConnectJsWebsocket;
131815
131826
  context = $packages["context"];
131816
131827
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
131817
131828
  websocket = $packages["nhooyr.io/websocket"];
@@ -131845,9 +131856,15 @@ $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
131845
131856
  /* */ } return; } if ($f === undefined) { $f = { $blk: Create }; } $f._entry = _entry; $f._r = _r; $f._tuple = _tuple; $f.connect = connect; $f.driver = driver; $f.exists = exists; $f.$s = $s; $f.$r = $r; return $f;
131846
131857
  };
131847
131858
  $pkg.Create = Create;
131859
+ GetMaxPacketSize = function(driver) {
131860
+ var _entry, driver;
131861
+ return (_entry = maxPacketSizes[Driver.keyFor(driver)], _entry !== undefined ? _entry.v : 0);
131862
+ };
131863
+ $pkg.GetMaxPacketSize = GetMaxPacketSize;
131848
131864
  init = function() {
131849
- var _key;
131865
+ var _key, _key$1;
131850
131866
  _key = "js_websocket"; (connects || $throwRuntimeError("assignment to entry in nil map"))[Driver.keyFor(_key)] = { k: _key, v: ConnectJsWebsocket };
131867
+ _key$1 = "js_websocket"; (maxPacketSizes || $throwRuntimeError("assignment to entry in nil map"))[Driver.keyFor(_key$1)] = { k: _key$1, v: 32768 };
131851
131868
  };
131852
131869
  JsWebsocketConn.ptr.prototype.Write = function(data) {
131853
131870
  var _r, c, data, err, $s, $r;
@@ -131927,6 +131944,7 @@ $packages["github.com/supraio/client-daemon/pkg/netpacket"] = (function() {
131927
131944
  $r = websocket.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
131928
131945
  $r = time.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
131929
131946
  connects = $makeMap(Driver.keyFor, []);
131947
+ maxPacketSizes = $makeMap(Driver.keyFor, []);
131930
131948
  init();
131931
131949
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
131932
131950
  };
@@ -133449,11 +133467,47 @@ $packages["github.com/supraio/client-daemon/pkg/netclient"] = (function() {
133449
133467
  return $pkg;
133450
133468
  })();
133451
133469
  $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
133452
- var $pkg = {}, $init, log, time, Frame, Stats, ptrType, sliceType, sliceType$1, ptrType$1, NewStats;
133470
+ var $pkg = {}, $init, log, time, ClientStats, Frame, Stats, ptrType, sliceType, sliceType$1, ptrType$1, ptrType$2, mapType, NewStats;
133453
133471
  log = $packages["log"];
133454
133472
  time = $packages["time"];
133473
+ ClientStats = $pkg.ClientStats = $newType(0, $kindStruct, "stats.ClientStats", true, "github.com/supraio/client-daemon/pkg/stats", true, function(LatencyNano_, ServerTimestampAhead_, CurrentFramesCount_, LastFrameRate_, TotalFramesCount_, CurrentCorruptedFramesCount_, LastCorruptedFrameRate_, TotalCorruptedFramesCount_, CurrentLostFramesCount_, LastLostFrameRate_, TotalLostFramesCount_, LastFramesLatencyAverage_, LastFramesCollectionAverage_, LastFramesDecodeAverage_, LastFramesRenderAverage_) {
133474
+ this.$val = this;
133475
+ if (arguments.length === 0) {
133476
+ this.LatencyNano = new $Int64(0, 0);
133477
+ this.ServerTimestampAhead = new $Int64(0, 0);
133478
+ this.CurrentFramesCount = 0;
133479
+ this.LastFrameRate = 0;
133480
+ this.TotalFramesCount = 0;
133481
+ this.CurrentCorruptedFramesCount = 0;
133482
+ this.LastCorruptedFrameRate = 0;
133483
+ this.TotalCorruptedFramesCount = 0;
133484
+ this.CurrentLostFramesCount = 0;
133485
+ this.LastLostFrameRate = 0;
133486
+ this.TotalLostFramesCount = 0;
133487
+ this.LastFramesLatencyAverage = new $Int64(0, 0);
133488
+ this.LastFramesCollectionAverage = new $Int64(0, 0);
133489
+ this.LastFramesDecodeAverage = new $Int64(0, 0);
133490
+ this.LastFramesRenderAverage = new $Int64(0, 0);
133491
+ return;
133492
+ }
133493
+ this.LatencyNano = LatencyNano_;
133494
+ this.ServerTimestampAhead = ServerTimestampAhead_;
133495
+ this.CurrentFramesCount = CurrentFramesCount_;
133496
+ this.LastFrameRate = LastFrameRate_;
133497
+ this.TotalFramesCount = TotalFramesCount_;
133498
+ this.CurrentCorruptedFramesCount = CurrentCorruptedFramesCount_;
133499
+ this.LastCorruptedFrameRate = LastCorruptedFrameRate_;
133500
+ this.TotalCorruptedFramesCount = TotalCorruptedFramesCount_;
133501
+ this.CurrentLostFramesCount = CurrentLostFramesCount_;
133502
+ this.LastLostFrameRate = LastLostFrameRate_;
133503
+ this.TotalLostFramesCount = TotalLostFramesCount_;
133504
+ this.LastFramesLatencyAverage = LastFramesLatencyAverage_;
133505
+ this.LastFramesCollectionAverage = LastFramesCollectionAverage_;
133506
+ this.LastFramesDecodeAverage = LastFramesDecodeAverage_;
133507
+ this.LastFramesRenderAverage = LastFramesRenderAverage_;
133508
+ });
133455
133509
  Frame = $pkg.Frame = $newType(8, $kindInterface, "stats.Frame", true, "github.com/supraio/client-daemon/pkg/stats", true, null);
133456
- Stats = $pkg.Stats = $newType(0, $kindStruct, "stats.Stats", true, "github.com/supraio/client-daemon/pkg/stats", true, function(stopped_, lastFrameAt_, latencyNano_, serverTimestampAhead_, currentFramesCount_, lastFrameRate_, totalFramesCount_, currentCorruptedFramesCount_, lastCorruptedFrameRate_, totalCorruptedFramesCount_, currentLostFramesCount_, lastLostFrameRate_, totalLostFramesCount_, currentFramesLatencies_, lastFramesLatencyAverage_) {
133510
+ Stats = $pkg.Stats = $newType(0, $kindStruct, "stats.Stats", true, "github.com/supraio/client-daemon/pkg/stats", true, function(stopped_, lastFrameAt_, latencyNano_, serverTimestampAhead_, currentFramesCount_, lastFrameRate_, totalFramesCount_, currentCorruptedFramesCount_, lastCorruptedFrameRate_, totalCorruptedFramesCount_, currentLostFramesCount_, lastLostFrameRate_, totalLostFramesCount_, currentFramesLatencies_, lastFramesLatencyAverage_, frameCollectionStartedAt_, frameCollections_, lastFramesCollectionAverage_, frameDecodeStartedAt_, frameDecodes_, lastFramesDecodeAverage_, frameRenderStartedAt_, frameRenders_, lastFramesRenderAverage_) {
133457
133511
  this.$val = this;
133458
133512
  if (arguments.length === 0) {
133459
133513
  this.stopped = false;
@@ -133471,6 +133525,15 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
133471
133525
  this.totalLostFramesCount = 0;
133472
133526
  this.currentFramesLatencies = sliceType.nil;
133473
133527
  this.lastFramesLatencyAverage = new $Int64(0, 0);
133528
+ this.frameCollectionStartedAt = false;
133529
+ this.frameCollections = sliceType.nil;
133530
+ this.lastFramesCollectionAverage = new $Int64(0, 0);
133531
+ this.frameDecodeStartedAt = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil);
133532
+ this.frameDecodes = sliceType.nil;
133533
+ this.lastFramesDecodeAverage = new $Int64(0, 0);
133534
+ this.frameRenderStartedAt = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil);
133535
+ this.frameRenders = sliceType.nil;
133536
+ this.lastFramesRenderAverage = new $Int64(0, 0);
133474
133537
  return;
133475
133538
  }
133476
133539
  this.stopped = stopped_;
@@ -133488,18 +133551,35 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
133488
133551
  this.totalLostFramesCount = totalLostFramesCount_;
133489
133552
  this.currentFramesLatencies = currentFramesLatencies_;
133490
133553
  this.lastFramesLatencyAverage = lastFramesLatencyAverage_;
133554
+ this.frameCollectionStartedAt = frameCollectionStartedAt_;
133555
+ this.frameCollections = frameCollections_;
133556
+ this.lastFramesCollectionAverage = lastFramesCollectionAverage_;
133557
+ this.frameDecodeStartedAt = frameDecodeStartedAt_;
133558
+ this.frameDecodes = frameDecodes_;
133559
+ this.lastFramesDecodeAverage = lastFramesDecodeAverage_;
133560
+ this.frameRenderStartedAt = frameRenderStartedAt_;
133561
+ this.frameRenders = frameRenders_;
133562
+ this.lastFramesRenderAverage = lastFramesRenderAverage_;
133491
133563
  });
133492
133564
  ptrType = $ptrType(time.Location);
133493
133565
  sliceType = $sliceType($Int64);
133494
133566
  sliceType$1 = $sliceType($emptyInterface);
133495
- ptrType$1 = $ptrType(Stats);
133567
+ ptrType$1 = $ptrType(ClientStats);
133568
+ ptrType$2 = $ptrType(Stats);
133569
+ mapType = $mapType($Uint16, time.Time);
133496
133570
  NewStats = function() {
133497
133571
  var s;
133498
- s = new Stats.ptr(false, $clone(time.Now(), time.Time), new $Int64(0, 0), new $Int64(0, 0), 0, 0, 0, 0, 0, 0, 0, 0, 0, sliceType.nil, new $Int64(0, 0));
133572
+ s = new Stats.ptr(false, $clone(time.Now(), time.Time), new $Int64(0, 0), new $Int64(0, 0), 0, 0, 0, 0, 0, 0, 0, 0, 0, sliceType.nil, new $Int64(0, 0), {}, sliceType.nil, new $Int64(0, 0), new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil), sliceType.nil, new $Int64(0, 0), new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil), sliceType.nil, new $Int64(0, 0));
133499
133573
  $go($methodVal(s, "startCalculations"), []);
133500
133574
  return s;
133501
133575
  };
133502
133576
  $pkg.NewStats = NewStats;
133577
+ Stats.ptr.prototype.GetClientStats = function() {
133578
+ var s;
133579
+ s = this;
133580
+ return new ClientStats.ptr(s.latencyNano, s.serverTimestampAhead, s.currentFramesCount, s.lastFrameRate, s.totalFramesCount, s.currentCorruptedFramesCount, s.lastCorruptedFrameRate, s.totalCorruptedFramesCount, s.currentLostFramesCount, s.lastLostFrameRate, s.totalLostFramesCount, s.lastFramesLatencyAverage, s.lastFramesCollectionAverage, s.lastFramesDecodeAverage, s.lastFramesRenderAverage);
133581
+ };
133582
+ Stats.prototype.GetClientStats = function() { return this.$val.GetClientStats(); };
133503
133583
  Stats.ptr.prototype.SetLatency = function(latencyNano) {
133504
133584
  var latencyNano, s;
133505
133585
  s = this;
@@ -133537,6 +133617,51 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
133537
133617
  s.currentLostFramesCount = s.currentLostFramesCount + (((lostFramesCount >> 0))) >> 0;
133538
133618
  };
133539
133619
  Stats.prototype.NotifyLostFrame = function(lostFramesCount) { return this.$val.NotifyLostFrame(lostFramesCount); };
133620
+ Stats.ptr.prototype.NotifyFrameCollectionStarted = function(frameID) {
133621
+ var _key, frameID, s;
133622
+ s = this;
133623
+ _key = frameID; (s.frameCollectionStartedAt || $throwRuntimeError("assignment to entry in nil map"))[$Uint16.keyFor(_key)] = { k: _key, v: $clone(time.Now(), time.Time) };
133624
+ };
133625
+ Stats.prototype.NotifyFrameCollectionStarted = function(frameID) { return this.$val.NotifyFrameCollectionStarted(frameID); };
133626
+ Stats.ptr.prototype.NotifyFrameCollectionEnded = function(frameID) {
133627
+ var _entry, _tuple, exists, frameCollectionNano, frameCollectionStartedAt, frameID, s;
133628
+ s = this;
133629
+ _tuple = (_entry = s.frameCollectionStartedAt[$Uint16.keyFor(frameID)], _entry !== undefined ? [_entry.v, true] : [new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil), false]);
133630
+ frameCollectionStartedAt = $clone(_tuple[0], time.Time);
133631
+ exists = _tuple[1];
133632
+ if (exists) {
133633
+ delete s.frameCollectionStartedAt[$Uint16.keyFor(frameID)];
133634
+ frameCollectionNano = time.Since($clone(frameCollectionStartedAt, time.Time)).Nanoseconds();
133635
+ s.frameCollections = $append(s.frameCollections, frameCollectionNano);
133636
+ }
133637
+ };
133638
+ Stats.prototype.NotifyFrameCollectionEnded = function(frameID) { return this.$val.NotifyFrameCollectionEnded(frameID); };
133639
+ Stats.ptr.prototype.NotifyFrameDecodeStarted = function() {
133640
+ var s;
133641
+ s = this;
133642
+ time.Time.copy(s.frameDecodeStartedAt, time.Now());
133643
+ };
133644
+ Stats.prototype.NotifyFrameDecodeStarted = function() { return this.$val.NotifyFrameDecodeStarted(); };
133645
+ Stats.ptr.prototype.NotifyFrameDecodeEnded = function() {
133646
+ var frameDecodeNano, s;
133647
+ s = this;
133648
+ frameDecodeNano = time.Since($clone(s.frameDecodeStartedAt, time.Time)).Nanoseconds();
133649
+ s.frameDecodes = $append(s.frameDecodes, frameDecodeNano);
133650
+ };
133651
+ Stats.prototype.NotifyFrameDecodeEnded = function() { return this.$val.NotifyFrameDecodeEnded(); };
133652
+ Stats.ptr.prototype.NotifyFrameRenderStarted = function() {
133653
+ var s;
133654
+ s = this;
133655
+ time.Time.copy(s.frameRenderStartedAt, time.Now());
133656
+ };
133657
+ Stats.prototype.NotifyFrameRenderStarted = function() { return this.$val.NotifyFrameRenderStarted(); };
133658
+ Stats.ptr.prototype.NotifyFrameRenderEnded = function() {
133659
+ var frameRenderNano, s;
133660
+ s = this;
133661
+ frameRenderNano = time.Since($clone(s.frameRenderStartedAt, time.Time)).Nanoseconds();
133662
+ s.frameRenders = $append(s.frameRenders, frameRenderNano);
133663
+ };
133664
+ Stats.prototype.NotifyFrameRenderEnded = function() { return this.$val.NotifyFrameRenderEnded(); };
133540
133665
  Stats.ptr.prototype.GetLastFrameAt = function() {
133541
133666
  var s;
133542
133667
  s = this;
@@ -133562,8 +133687,8 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
133562
133687
  };
133563
133688
  Stats.prototype.GetLostFrameRate = function() { return this.$val.GetLostFrameRate(); };
133564
133689
  Stats.ptr.prototype.startCalculations = function() {
133565
- var _i, _ref, latency, s, totalLatencies, x, $s, $r;
133566
- /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _ref = $f._ref; latency = $f.latency; s = $f.s; totalLatencies = $f.totalLatencies; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
133690
+ var _i, _i$1, _i$2, _i$3, _ref, _ref$1, _ref$2, _ref$3, collectionTime, decodeTime, latency, renderTime, s, totalCollectionTime, totalDecodeTime, totalLatencies, totalRenderTime, x, x$1, x$2, x$3, $s, $r;
133691
+ /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; collectionTime = $f.collectionTime; decodeTime = $f.decodeTime; latency = $f.latency; renderTime = $f.renderTime; s = $f.s; totalCollectionTime = $f.totalCollectionTime; totalDecodeTime = $f.totalDecodeTime; totalLatencies = $f.totalLatencies; totalRenderTime = $f.totalRenderTime; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
133567
133692
  s = this;
133568
133693
  /* while (true) { */ case 1:
133569
133694
  /* if (!(!s.stopped)) { break; } */ if(!(!s.stopped)) { $s = 2; continue; }
@@ -133589,25 +133714,65 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
133589
133714
  s.lastFramesLatencyAverage = $div64(totalLatencies, (new $Int64(0, s.currentFramesLatencies.$length)), false);
133590
133715
  s.currentFramesLatencies = new sliceType([]);
133591
133716
  }
133717
+ if (s.frameCollections.$length > 0) {
133718
+ totalCollectionTime = new $Int64(0, 0);
133719
+ _ref$1 = s.frameCollections;
133720
+ _i$1 = 0;
133721
+ while (true) {
133722
+ if (!(_i$1 < _ref$1.$length)) { break; }
133723
+ collectionTime = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
133724
+ totalCollectionTime = (x$1 = collectionTime, new $Int64(totalCollectionTime.$high + x$1.$high, totalCollectionTime.$low + x$1.$low));
133725
+ _i$1++;
133726
+ }
133727
+ s.lastFramesCollectionAverage = $div64(totalCollectionTime, (new $Int64(0, s.frameCollections.$length)), false);
133728
+ s.frameCollections = new sliceType([]);
133729
+ }
133730
+ if (s.frameDecodes.$length > 0) {
133731
+ totalDecodeTime = new $Int64(0, 0);
133732
+ _ref$2 = s.frameDecodes;
133733
+ _i$2 = 0;
133734
+ while (true) {
133735
+ if (!(_i$2 < _ref$2.$length)) { break; }
133736
+ decodeTime = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
133737
+ totalDecodeTime = (x$2 = decodeTime, new $Int64(totalDecodeTime.$high + x$2.$high, totalDecodeTime.$low + x$2.$low));
133738
+ _i$2++;
133739
+ }
133740
+ s.lastFramesDecodeAverage = $div64(totalDecodeTime, (new $Int64(0, s.frameDecodes.$length)), false);
133741
+ s.frameDecodes = new sliceType([]);
133742
+ }
133743
+ if (s.frameRenders.$length > 0) {
133744
+ totalRenderTime = new $Int64(0, 0);
133745
+ _ref$3 = s.frameRenders;
133746
+ _i$3 = 0;
133747
+ while (true) {
133748
+ if (!(_i$3 < _ref$3.$length)) { break; }
133749
+ renderTime = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
133750
+ totalRenderTime = (x$3 = renderTime, new $Int64(totalRenderTime.$high + x$3.$high, totalRenderTime.$low + x$3.$low));
133751
+ _i$3++;
133752
+ }
133753
+ s.lastFramesRenderAverage = $div64(totalRenderTime, (new $Int64(0, s.frameRenders.$length)), false);
133754
+ s.frameRenders = new sliceType([]);
133755
+ }
133592
133756
  $r = s.print(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
133593
133757
  $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
133594
133758
  /* } */ $s = 1; continue; case 2:
133595
133759
  $s = -1; return;
133596
- /* */ } return; } if ($f === undefined) { $f = { $blk: Stats.ptr.prototype.startCalculations }; } $f._i = _i; $f._ref = _ref; $f.latency = latency; $f.s = s; $f.totalLatencies = totalLatencies; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
133760
+ /* */ } return; } if ($f === undefined) { $f = { $blk: Stats.ptr.prototype.startCalculations }; } $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f.collectionTime = collectionTime; $f.decodeTime = decodeTime; $f.latency = latency; $f.renderTime = renderTime; $f.s = s; $f.totalCollectionTime = totalCollectionTime; $f.totalDecodeTime = totalDecodeTime; $f.totalLatencies = totalLatencies; $f.totalRenderTime = totalRenderTime; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
133597
133761
  };
133598
133762
  Stats.prototype.startCalculations = function() { return this.$val.startCalculations(); };
133599
133763
  Stats.ptr.prototype.print = function() {
133600
133764
  var s, $s, $r;
133601
133765
  /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
133602
133766
  s = this;
133603
- $r = log.Printf("Frames/Corrupted/Lost - total: %d/%d/%d - %d/%d/%d, FrameLatency: %dms Latency/ServerAhead: %dms/%dms", new sliceType$1([new $Int(s.GetFrameRate()), new $Int(s.GetCorruptedFrameRate()), new $Int(s.GetLostFrameRate()), new $Int(s.totalFramesCount), new $Int(s.totalCorruptedFramesCount), new $Int(s.totalLostFramesCount), $div64(s.lastFramesLatencyAverage, new $Int64(0, 1000000), false), $div64(s.latencyNano, new $Int64(0, 1000000), false), $div64(s.serverTimestampAhead, new $Int64(0, 1000000), false)])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
133767
+ $r = log.Printf("Frames/Corrupted/Lost - total: %d/%d/%d - %d/%d/%d, FrameLatency/Collection/Decode/Render: %dms/%dms/%dms/%dms Latency/ServerAhead: %dms/%dms", new sliceType$1([new $Int(s.GetFrameRate()), new $Int(s.GetCorruptedFrameRate()), new $Int(s.GetLostFrameRate()), new $Int(s.totalFramesCount), new $Int(s.totalCorruptedFramesCount), new $Int(s.totalLostFramesCount), $div64(s.lastFramesLatencyAverage, new $Int64(0, 1000000), false), $div64(s.lastFramesCollectionAverage, new $Int64(0, 1000000), false), $div64(s.lastFramesDecodeAverage, new $Int64(0, 1000000), false), $div64(s.lastFramesRenderAverage, new $Int64(0, 1000000), false), $div64(s.latencyNano, new $Int64(0, 1000000), false), $div64(s.serverTimestampAhead, new $Int64(0, 1000000), false)])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
133604
133768
  $s = -1; return;
133605
133769
  /* */ } return; } if ($f === undefined) { $f = { $blk: Stats.ptr.prototype.print }; } $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
133606
133770
  };
133607
133771
  Stats.prototype.print = function() { return this.$val.print(); };
133608
- ptrType$1.methods = [{prop: "SetLatency", name: "SetLatency", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "SetServerTimestampAhead", name: "SetServerTimestampAhead", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "NotifyFrame", name: "NotifyFrame", pkg: "", typ: $funcType([Frame], [], false)}, {prop: "NotifyCorruptedFrame", name: "NotifyCorruptedFrame", pkg: "", typ: $funcType([$Uint16], [], false)}, {prop: "NotifyLostFrame", name: "NotifyLostFrame", pkg: "", typ: $funcType([$Uint16], [], false)}, {prop: "GetLastFrameAt", name: "GetLastFrameAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetFrameRate", name: "GetFrameRate", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "GetCorruptedFrameRate", name: "GetCorruptedFrameRate", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "GetLostFrameRate", name: "GetLostFrameRate", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "startCalculations", name: "startCalculations", pkg: "github.com/supraio/client-daemon/pkg/stats", typ: $funcType([], [], false)}, {prop: "print", name: "print", pkg: "github.com/supraio/client-daemon/pkg/stats", typ: $funcType([], [], false)}];
133772
+ ptrType$2.methods = [{prop: "GetClientStats", name: "GetClientStats", pkg: "", typ: $funcType([], [ptrType$1], false)}, {prop: "SetLatency", name: "SetLatency", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "SetServerTimestampAhead", name: "SetServerTimestampAhead", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "NotifyFrame", name: "NotifyFrame", pkg: "", typ: $funcType([Frame], [], false)}, {prop: "NotifyCorruptedFrame", name: "NotifyCorruptedFrame", pkg: "", typ: $funcType([$Uint16], [], false)}, {prop: "NotifyLostFrame", name: "NotifyLostFrame", pkg: "", typ: $funcType([$Uint16], [], false)}, {prop: "NotifyFrameCollectionStarted", name: "NotifyFrameCollectionStarted", pkg: "", typ: $funcType([$Uint16], [], false)}, {prop: "NotifyFrameCollectionEnded", name: "NotifyFrameCollectionEnded", pkg: "", typ: $funcType([$Uint16], [], false)}, {prop: "NotifyFrameDecodeStarted", name: "NotifyFrameDecodeStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameDecodeEnded", name: "NotifyFrameDecodeEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameRenderStarted", name: "NotifyFrameRenderStarted", pkg: "", typ: $funcType([], [], false)}, {prop: "NotifyFrameRenderEnded", name: "NotifyFrameRenderEnded", pkg: "", typ: $funcType([], [], false)}, {prop: "GetLastFrameAt", name: "GetLastFrameAt", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "GetFrameRate", name: "GetFrameRate", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "GetCorruptedFrameRate", name: "GetCorruptedFrameRate", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "GetLostFrameRate", name: "GetLostFrameRate", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "startCalculations", name: "startCalculations", pkg: "github.com/supraio/client-daemon/pkg/stats", typ: $funcType([], [], false)}, {prop: "print", name: "print", pkg: "github.com/supraio/client-daemon/pkg/stats", typ: $funcType([], [], false)}];
133773
+ ClientStats.init("", [{prop: "LatencyNano", name: "LatencyNano", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "ServerTimestampAhead", name: "ServerTimestampAhead", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "CurrentFramesCount", name: "CurrentFramesCount", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "LastFrameRate", name: "LastFrameRate", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "TotalFramesCount", name: "TotalFramesCount", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "CurrentCorruptedFramesCount", name: "CurrentCorruptedFramesCount", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "LastCorruptedFrameRate", name: "LastCorruptedFrameRate", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "TotalCorruptedFramesCount", name: "TotalCorruptedFramesCount", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "CurrentLostFramesCount", name: "CurrentLostFramesCount", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "LastLostFrameRate", name: "LastLostFrameRate", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "TotalLostFramesCount", name: "TotalLostFramesCount", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "LastFramesLatencyAverage", name: "LastFramesLatencyAverage", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LastFramesCollectionAverage", name: "LastFramesCollectionAverage", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LastFramesDecodeAverage", name: "LastFramesDecodeAverage", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "LastFramesRenderAverage", name: "LastFramesRenderAverage", embedded: false, exported: true, typ: $Int64, tag: ""}]);
133609
133774
  Frame.init([{prop: "GetTimestmap", name: "GetTimestmap", pkg: "", typ: $funcType([], [$Uint64], false)}]);
133610
- Stats.init("github.com/supraio/client-daemon/pkg/stats", [{prop: "stopped", name: "stopped", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "lastFrameAt", name: "lastFrameAt", embedded: false, exported: false, typ: time.Time, tag: ""}, {prop: "latencyNano", name: "latencyNano", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "serverTimestampAhead", name: "serverTimestampAhead", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "currentFramesCount", name: "currentFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastFrameRate", name: "lastFrameRate", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "totalFramesCount", name: "totalFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "currentCorruptedFramesCount", name: "currentCorruptedFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastCorruptedFrameRate", name: "lastCorruptedFrameRate", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "totalCorruptedFramesCount", name: "totalCorruptedFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "currentLostFramesCount", name: "currentLostFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastLostFrameRate", name: "lastLostFrameRate", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "totalLostFramesCount", name: "totalLostFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "currentFramesLatencies", name: "currentFramesLatencies", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "lastFramesLatencyAverage", name: "lastFramesLatencyAverage", embedded: false, exported: false, typ: $Int64, tag: ""}]);
133775
+ Stats.init("github.com/supraio/client-daemon/pkg/stats", [{prop: "stopped", name: "stopped", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "lastFrameAt", name: "lastFrameAt", embedded: false, exported: false, typ: time.Time, tag: ""}, {prop: "latencyNano", name: "latencyNano", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "serverTimestampAhead", name: "serverTimestampAhead", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "currentFramesCount", name: "currentFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastFrameRate", name: "lastFrameRate", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "totalFramesCount", name: "totalFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "currentCorruptedFramesCount", name: "currentCorruptedFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastCorruptedFrameRate", name: "lastCorruptedFrameRate", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "totalCorruptedFramesCount", name: "totalCorruptedFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "currentLostFramesCount", name: "currentLostFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastLostFrameRate", name: "lastLostFrameRate", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "totalLostFramesCount", name: "totalLostFramesCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "currentFramesLatencies", name: "currentFramesLatencies", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "lastFramesLatencyAverage", name: "lastFramesLatencyAverage", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "frameCollectionStartedAt", name: "frameCollectionStartedAt", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "frameCollections", name: "frameCollections", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "lastFramesCollectionAverage", name: "lastFramesCollectionAverage", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "frameDecodeStartedAt", name: "frameDecodeStartedAt", embedded: false, exported: false, typ: time.Time, tag: ""}, {prop: "frameDecodes", name: "frameDecodes", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "lastFramesDecodeAverage", name: "lastFramesDecodeAverage", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "frameRenderStartedAt", name: "frameRenderStartedAt", embedded: false, exported: false, typ: time.Time, tag: ""}, {prop: "frameRenders", name: "frameRenders", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "lastFramesRenderAverage", name: "lastFramesRenderAverage", embedded: false, exported: false, typ: $Int64, tag: ""}]);
133611
133776
  $init = function() {
133612
133777
  $pkg.$init = function() {};
133613
133778
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
@@ -136178,24 +136343,24 @@ $packages["github.com/nuberu/webgl"] = (function() {
136178
136343
  /* */ if ($assertType(_ref, sliceType$9, true)[1]) { $s = 10; continue; }
136179
136344
  /* */ $s = 11; continue;
136180
136345
  /* if ($assertType(_ref, sliceType, true)[1]) { */ case 1:
136181
- s$4[0] = _ref.$val;
136182
- h = ($pointerOfStructConversion(((s$4.$ptr || (s$4.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, s$4)))), ptrType));
136346
+ s$3[0] = _ref.$val;
136347
+ h = ($pointerOfStructConversion(((s$3.$ptr || (s$3.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, s$3)))), ptrType));
136183
136348
  $s = -1; return ((h)).$get();
136184
136349
  /* } else if ($assertType(_ref, sliceType$1, true)[1]) { */ case 2:
136185
- s$8[0] = _ref.$val;
136186
- h$1 = ($pointerOfStructConversion(((s$8.$ptr || (s$8.$ptr = new ptrType$2(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, s$8)))), ptrType));
136350
+ s$7[0] = _ref.$val;
136351
+ h$1 = ($pointerOfStructConversion(((s$7.$ptr || (s$7.$ptr = new ptrType$2(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, s$7)))), ptrType));
136187
136352
  h$1.Len = $imul(h$1.Len, (2));
136188
136353
  h$1.Cap = $imul(h$1.Cap, (2));
136189
136354
  $s = -1; return ((h$1)).$get();
136190
136355
  /* } else if ($assertType(_ref, sliceType$2, true)[1]) { */ case 3:
136191
- s$5[0] = _ref.$val;
136192
- h$2 = ($pointerOfStructConversion(((s$5.$ptr || (s$5.$ptr = new ptrType$3(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, s$5)))), ptrType));
136356
+ s$4[0] = _ref.$val;
136357
+ h$2 = ($pointerOfStructConversion(((s$4.$ptr || (s$4.$ptr = new ptrType$3(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, s$4)))), ptrType));
136193
136358
  h$2.Len = $imul(h$2.Len, (4));
136194
136359
  h$2.Cap = $imul(h$2.Cap, (4));
136195
136360
  $s = -1; return ((h$2)).$get();
136196
136361
  /* } else if ($assertType(_ref, sliceType$3, true)[1]) { */ case 4:
136197
- s$6[0] = _ref.$val;
136198
- h$3 = ($pointerOfStructConversion(((s$6.$ptr || (s$6.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, s$6)))), ptrType));
136362
+ s$5[0] = _ref.$val;
136363
+ h$3 = ($pointerOfStructConversion(((s$5.$ptr || (s$5.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, s$5)))), ptrType));
136199
136364
  h$3.Len = $imul(h$3.Len, (8));
136200
136365
  h$3.Cap = $imul(h$3.Cap, (8));
136201
136366
  $s = -1; return ((h$3)).$get();
@@ -136203,14 +136368,14 @@ $packages["github.com/nuberu/webgl"] = (function() {
136203
136368
  s$10 = _ref.$val;
136204
136369
  $s = -1; return s$10;
136205
136370
  /* } else if ($assertType(_ref, sliceType$5, true)[1]) { */ case 6:
136206
- s$7[0] = _ref.$val;
136207
- h$4 = ($pointerOfStructConversion(((s$7.$ptr || (s$7.$ptr = new ptrType$5(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, s$7)))), ptrType));
136371
+ s$6[0] = _ref.$val;
136372
+ h$4 = ($pointerOfStructConversion(((s$6.$ptr || (s$6.$ptr = new ptrType$5(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, s$6)))), ptrType));
136208
136373
  h$4.Len = $imul(h$4.Len, (2));
136209
136374
  h$4.Cap = $imul(h$4.Cap, (2));
136210
136375
  $s = -1; return ((h$4)).$get();
136211
136376
  /* } else if ($assertType(_ref, sliceType$6, true)[1]) { */ case 7:
136212
- s$9[0] = _ref.$val;
136213
- h$5 = ($pointerOfStructConversion(((s$9.$ptr || (s$9.$ptr = new ptrType$6(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, s$9)))), ptrType));
136377
+ s$8[0] = _ref.$val;
136378
+ h$5 = ($pointerOfStructConversion(((s$8.$ptr || (s$8.$ptr = new ptrType$6(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, s$8)))), ptrType));
136214
136379
  h$5.Len = $imul(h$5.Len, (4));
136215
136380
  h$5.Cap = $imul(h$5.Cap, (4));
136216
136381
  $s = -1; return ((h$5)).$get();
@@ -136227,8 +136392,8 @@ $packages["github.com/nuberu/webgl"] = (function() {
136227
136392
  h$7.Cap = $imul(h$7.Cap, (4));
136228
136393
  $s = -1; return ((h$7)).$get();
136229
136394
  /* } else if ($assertType(_ref, sliceType$9, true)[1]) { */ case 10:
136230
- s$3[0] = _ref.$val;
136231
- h$8 = ($pointerOfStructConversion(((s$3.$ptr || (s$3.$ptr = new ptrType$9(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, s$3)))), ptrType));
136395
+ s$9[0] = _ref.$val;
136396
+ h$8 = ($pointerOfStructConversion(((s$9.$ptr || (s$9.$ptr = new ptrType$9(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, s$9)))), ptrType));
136232
136397
  h$8.Len = $imul(h$8.Len, (8));
136233
136398
  h$8.Cap = $imul(h$8.Cap, (8));
136234
136399
  $s = -1; return ((h$8)).$get();
@@ -143717,19 +143882,21 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
143717
143882
  this.timestamp = timestamp_;
143718
143883
  });
143719
143884
  FrameType = $pkg.FrameType = $newType(1, $kindUint8, "render.FrameType", true, "github.com/supraio/client-daemon/pkg/render", true, null);
143720
- FrameCollector = $pkg.FrameCollector = $newType(0, $kindStruct, "render.FrameCollector", true, "github.com/supraio/client-daemon/pkg/render", true, function(conn_, stats_, framesMap_, lastFullFrameID_) {
143885
+ FrameCollector = $pkg.FrameCollector = $newType(0, $kindStruct, "render.FrameCollector", true, "github.com/supraio/client-daemon/pkg/render", true, function(conn_, stats_, framesMap_, lastFullFrameID_, maxPacketSize_) {
143721
143886
  this.$val = this;
143722
143887
  if (arguments.length === 0) {
143723
143888
  this.conn = $ifaceNil;
143724
143889
  this.stats = ptrType.nil;
143725
143890
  this.framesMap = false;
143726
143891
  this.lastFullFrameID = 0;
143892
+ this.maxPacketSize = 0;
143727
143893
  return;
143728
143894
  }
143729
143895
  this.conn = conn_;
143730
143896
  this.stats = stats_;
143731
143897
  this.framesMap = framesMap_;
143732
143898
  this.lastFullFrameID = lastFullFrameID_;
143899
+ this.maxPacketSize = maxPacketSize_;
143733
143900
  });
143734
143901
  FrameMapItem = $pkg.FrameMapItem = $newType(0, $kindStruct, "render.FrameMapItem", true, "github.com/supraio/client-daemon/pkg/render", true, function(buffer_, frameType_, timestamp_, frameID_, total_, received_) {
143735
143902
  this.$val = this;
@@ -143769,7 +143936,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
143769
143936
  this.username = username_;
143770
143937
  this.processDir = processDir_;
143771
143938
  });
143772
- ScreenWindow = $pkg.ScreenWindow = $newType(0, $kindStruct, "render.ScreenWindow", true, "github.com/supraio/client-daemon/pkg/render", true, function(processInfoManager_, screenDriver_, screenHost_, metadataDriver_, metadataHost_, processPath_, clientID_, clientSecret_, screenID_, secure_, screenSize_, renderMutex_, timeoutDuration_, closed_, stats_, onClose_, window_, screen_, screenConn_, screenReconnecting_, metadataServer_, frameCollector_, x264Renderer_, screenSender_, metadataSender_, metadataResponsiveSender_, sizeHandler_, keyHandler_, mouseHandler_, healthchecker_, keyEventChan_, mouseEventChan_, sizeEventChan_, focusEventChan_, winCloseChannel_) {
143939
+ ScreenWindow = $pkg.ScreenWindow = $newType(0, $kindStruct, "render.ScreenWindow", true, "github.com/supraio/client-daemon/pkg/render", true, function(processInfoManager_, screenDriver_, screenHost_, metadataDriver_, metadataHost_, clientID_, clientSecret_, screenID_, secure_, screenSize_, renderMutex_, timeoutDuration_, closed_, stats_, onClose_, window_, screen_, screenConn_, screenReconnecting_, metadataServer_, frameCollector_, x264Renderer_, screenSender_, metadataSender_, metadataResponsiveSender_, sizeHandler_, keyHandler_, mouseHandler_, healthchecker_, keyEventChan_, mouseEventChan_, sizeEventChan_, focusEventChan_, winCloseChannel_) {
143773
143940
  this.$val = this;
143774
143941
  if (arguments.length === 0) {
143775
143942
  this.processInfoManager = ptrType$3.nil;
@@ -143777,7 +143944,6 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
143777
143944
  this.screenHost = "";
143778
143945
  this.metadataDriver = "";
143779
143946
  this.metadataHost = "";
143780
- this.processPath = "";
143781
143947
  this.clientID = "";
143782
143948
  this.clientSecret = "";
143783
143949
  this.screenID = "";
@@ -143814,7 +143980,6 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
143814
143980
  this.screenHost = screenHost_;
143815
143981
  this.metadataDriver = metadataDriver_;
143816
143982
  this.metadataHost = metadataHost_;
143817
- this.processPath = processPath_;
143818
143983
  this.clientID = clientID_;
143819
143984
  this.clientSecret = clientSecret_;
143820
143985
  this.screenID = screenID_;
@@ -143845,16 +144010,18 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
143845
144010
  this.focusEventChan = focusEventChan_;
143846
144011
  this.winCloseChannel = winCloseChannel_;
143847
144012
  });
143848
- X264FrameRenderer = $pkg.X264FrameRenderer = $newType(0, $kindStruct, "render.X264FrameRenderer", true, "github.com/supraio/client-daemon/pkg/render", true, function(screenBuffer_, window_, dec_) {
144013
+ X264FrameRenderer = $pkg.X264FrameRenderer = $newType(0, $kindStruct, "render.X264FrameRenderer", true, "github.com/supraio/client-daemon/pkg/render", true, function(screenBuffer_, window_, stats_, dec_) {
143849
144014
  this.$val = this;
143850
144015
  if (arguments.length === 0) {
143851
144016
  this.screenBuffer = $ifaceNil;
143852
144017
  this.window = $ifaceNil;
144018
+ this.stats = ptrType.nil;
143853
144019
  this.dec = ptrType$12.nil;
143854
144020
  return;
143855
144021
  }
143856
144022
  this.screenBuffer = screenBuffer_;
143857
144023
  this.window = window_;
144024
+ this.stats = stats_;
143858
144025
  this.dec = dec_;
143859
144026
  });
143860
144027
  ptrType = $ptrType(stats.Stats);
@@ -143890,16 +144057,17 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
143890
144057
  return f.timestamp;
143891
144058
  };
143892
144059
  Frame.prototype.GetTimestmap = function() { return this.$val.GetTimestmap(); };
143893
- NewFrameCollector = function(screenConn, stats$1, lastFrameID) {
143894
- var lastFrameID, screenConn, stats$1;
143895
- return new FrameCollector.ptr(screenConn, stats$1, $makeMap($Uint16.keyFor, []), lastFrameID);
144060
+ NewFrameCollector = function(screenConn, stats$1, lastFrameID, maxPacketSize) {
144061
+ var lastFrameID, maxPacketSize, screenConn, stats$1;
144062
+ return new FrameCollector.ptr(screenConn, stats$1, $makeMap($Uint16.keyFor, []), lastFrameID, maxPacketSize);
143896
144063
  };
143897
144064
  $pkg.NewFrameCollector = NewFrameCollector;
143898
144065
  FrameCollector.ptr.prototype.CollectFrame = function() {
143899
- var _entry, _key, _r, _tuple, _tuple$1, buffer, bufferLength, bufferSize, c, dataEndsAt, dataStartsAt, err, frameExists, frameID, frameMapItem, headerSize, packetBuffer, received, seq, total, $s, $r;
143900
- /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _key = $f._key; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; buffer = $f.buffer; bufferLength = $f.bufferLength; bufferSize = $f.bufferSize; c = $f.c; dataEndsAt = $f.dataEndsAt; dataStartsAt = $f.dataStartsAt; err = $f.err; frameExists = $f.frameExists; frameID = $f.frameID; frameMapItem = $f.frameMapItem; headerSize = $f.headerSize; packetBuffer = $f.packetBuffer; received = $f.received; seq = $f.seq; total = $f.total; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
144066
+ var _entry, _key, _r, _tuple, _tuple$1, buffer, bufferLength, bufferSize, c, dataEndsAt, dataPartSize, dataStartsAt, err, frameExists, frameID, frameMapItem, headerSize, packetBuffer, received, seq, total, $s, $r;
144067
+ /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _key = $f._key; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; buffer = $f.buffer; bufferLength = $f.bufferLength; bufferSize = $f.bufferSize; c = $f.c; dataEndsAt = $f.dataEndsAt; dataPartSize = $f.dataPartSize; dataStartsAt = $f.dataStartsAt; err = $f.err; frameExists = $f.frameExists; frameID = $f.frameID; frameMapItem = $f.frameMapItem; headerSize = $f.headerSize; packetBuffer = $f.packetBuffer; received = $f.received; seq = $f.seq; total = $f.total; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
143901
144068
  c = this;
143902
- packetBuffer = $makeSlice(sliceType, 508);
144069
+ packetBuffer = $makeSlice(sliceType, c.maxPacketSize);
144070
+ dataPartSize = c.maxPacketSize - 6 >> 0;
143903
144071
  /* while (true) { */ case 1:
143904
144072
  _r = c.conn.Read(packetBuffer); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
143905
144073
  _tuple = _r;
@@ -143916,7 +144084,8 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
143916
144084
  frameMapItem = _tuple$1[0];
143917
144085
  frameExists = _tuple$1[1];
143918
144086
  if (!frameExists || (seq === 0) || !((total === frameMapItem.total))) {
143919
- bufferSize = $imul(((total >> 0)), 502);
144087
+ c.stats.NotifyFrameCollectionStarted(frameID);
144088
+ bufferSize = $imul(((total >> 0)), dataPartSize);
143920
144089
  received = 0;
143921
144090
  frameMapItem = new FrameMapItem.ptr($makeSlice(sliceType, bufferSize), 0, new $Uint64(0, 0), frameID, total, received);
143922
144091
  _key = frameID; (c.framesMap || $throwRuntimeError("assignment to entry in nil map"))[$Uint16.keyFor(_key)] = { k: _key, v: frameMapItem };
@@ -143926,7 +144095,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
143926
144095
  headerSize = 15;
143927
144096
  }
143928
144097
  }
143929
- dataStartsAt = $imul(((seq >> 0)), 502);
144098
+ dataStartsAt = $imul(((seq >> 0)), dataPartSize);
143930
144099
  if (seq > 0) {
143931
144100
  dataStartsAt = dataStartsAt - 9 >> 0;
143932
144101
  }
@@ -143946,11 +144115,12 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
143946
144115
  }
143947
144116
  c.lastFullFrameID = frameID;
143948
144117
  delete c.framesMap[$Uint16.keyFor(frameID)];
144118
+ c.stats.NotifyFrameCollectionEnded(frameID);
143949
144119
  $s = -1; return [new Frame.ptr(frameMapItem.frameType, buffer, frameMapItem.timestamp), $ifaceNil];
143950
144120
  }
143951
144121
  /* } */ $s = 1; continue; case 2:
143952
144122
  $s = -1; return [ptrType$1.nil, $ifaceNil];
143953
- /* */ } return; } if ($f === undefined) { $f = { $blk: FrameCollector.ptr.prototype.CollectFrame }; } $f._entry = _entry; $f._key = _key; $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.buffer = buffer; $f.bufferLength = bufferLength; $f.bufferSize = bufferSize; $f.c = c; $f.dataEndsAt = dataEndsAt; $f.dataStartsAt = dataStartsAt; $f.err = err; $f.frameExists = frameExists; $f.frameID = frameID; $f.frameMapItem = frameMapItem; $f.headerSize = headerSize; $f.packetBuffer = packetBuffer; $f.received = received; $f.seq = seq; $f.total = total; $f.$s = $s; $f.$r = $r; return $f;
144123
+ /* */ } return; } if ($f === undefined) { $f = { $blk: FrameCollector.ptr.prototype.CollectFrame }; } $f._entry = _entry; $f._key = _key; $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.buffer = buffer; $f.bufferLength = bufferLength; $f.bufferSize = bufferSize; $f.c = c; $f.dataEndsAt = dataEndsAt; $f.dataPartSize = dataPartSize; $f.dataStartsAt = dataStartsAt; $f.err = err; $f.frameExists = frameExists; $f.frameID = frameID; $f.frameMapItem = frameMapItem; $f.headerSize = headerSize; $f.packetBuffer = packetBuffer; $f.received = received; $f.seq = seq; $f.total = total; $f.$s = $s; $f.$r = $r; return $f;
143954
144124
  };
143955
144125
  FrameCollector.prototype.CollectFrame = function() { return this.$val.CollectFrame(); };
143956
144126
  NewProcessInfoManager = function(username, processDir) {
@@ -144132,7 +144302,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
144132
144302
  $pkg.MainDriver = MainDriver;
144133
144303
  NewScreenWindow = function(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, screenSize, timeoutDuration) {
144134
144304
  var clientID, clientSecret, metadataDriver, metadataHost, processInfoManager, screenDriver, screenHost, screenID, screenSize, secure, timeoutDuration;
144135
- return new ScreenWindow.ptr(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, "", clientID, clientSecret, screenID, secure, $clone(screenSize, image.Point), new sync.Mutex.ptr(0, 0), timeoutDuration, true, stats.NewStats(), sliceType$3.nil, $ifaceNil, $ifaceNil, $ifaceNil, false, ptrType$4.nil, ptrType$5.nil, ptrType$6.nil, $ifaceNil, $ifaceNil, ptrType$7.nil, ptrType$8.nil, ptrType$9.nil, ptrType$10.nil, ptrType$11.nil, new $Chan(key.Event, 0), new $Chan(mouse.Event, 0), new $Chan(size.Event, 0), new $Chan(focus.Event, 0), new $Chan($emptyInterface, 0));
144305
+ return new ScreenWindow.ptr(processInfoManager, screenDriver, screenHost, metadataDriver, metadataHost, clientID, clientSecret, screenID, secure, $clone(screenSize, image.Point), new sync.Mutex.ptr(0, 0), timeoutDuration, true, stats.NewStats(), sliceType$3.nil, $ifaceNil, $ifaceNil, $ifaceNil, false, ptrType$4.nil, ptrType$5.nil, ptrType$6.nil, $ifaceNil, $ifaceNil, ptrType$7.nil, ptrType$8.nil, ptrType$9.nil, ptrType$10.nil, ptrType$11.nil, new $Chan(key.Event, 0), new $Chan(mouse.Event, 0), new $Chan(size.Event, 0), new $Chan(focus.Event, 0), new $Chan($emptyInterface, 0));
144136
144306
  };
144137
144307
  $pkg.NewScreenWindow = NewScreenWindow;
144138
144308
  ScreenWindow.ptr.prototype.Start = function() {
@@ -144447,6 +144617,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
144447
144617
  w[0].sizeHandler = window.NewSizeHandler(w[0].sizeEventChan, w[0].metadataSender);
144448
144618
  w[0].sizeHandler.Start();
144449
144619
  $go($methodVal(w[0], "startTimestampSyncing"), []);
144620
+ $go($methodVal(w[0], "startStatsSyncing"), []);
144450
144621
  w[0].metadataServer.OnClose((function(w) { return function $b() {
144451
144622
  var _r$4, err$1, $s, $r;
144452
144623
  /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$4 = $f._r$4; err$1 = $f.err$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
@@ -144498,9 +144669,44 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
144498
144669
  /* */ } return; } if ($f === undefined) { $f = { $blk: ScreenWindow.ptr.prototype.startTimestampSyncing }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.latencyEnd = latencyEnd; $f.latencyNano = latencyNano; $f.latencyStart = latencyStart; $f.serverTimestamp = serverTimestamp; $f.serverTimestampAhead = serverTimestampAhead; $f.serverTimestampData = serverTimestampData; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
144499
144670
  };
144500
144671
  ScreenWindow.prototype.startTimestampSyncing = function() { return this.$val.startTimestampSyncing(); };
144672
+ ScreenWindow.ptr.prototype.startStatsSyncing = function() {
144673
+ var _r, _r$1, _tuple, _tuple$1, clientStats, data, err, w, $s, $r;
144674
+ /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; clientStats = $f.clientStats; data = $f.data; err = $f.err; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
144675
+ w = this;
144676
+ $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
144677
+ /* while (true) { */ case 2:
144678
+ /* if (!(!w.closed)) { break; } */ if(!(!w.closed)) { $s = 3; continue; }
144679
+ clientStats = w.stats.GetClientStats();
144680
+ _r = json.Marshal(clientStats); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
144681
+ _tuple = _r;
144682
+ data = _tuple[0];
144683
+ err = _tuple[1];
144684
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 5; continue; }
144685
+ /* */ $s = 6; continue;
144686
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 5:
144687
+ $r = errs.Print("Stats serialize", err); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
144688
+ $r = time.Sleep(new time.Duration(1, 705032704)); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
144689
+ /* continue; */ $s = 2; continue;
144690
+ /* } */ case 6:
144691
+ _r$1 = w.metadataResponsiveSender.SendServerWaitResponse(48, data); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
144692
+ _tuple$1 = _r$1;
144693
+ err = _tuple$1[1];
144694
+ /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 10; continue; }
144695
+ /* */ $s = 11; continue;
144696
+ /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 10:
144697
+ $r = errs.Print("Stats sync", err); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
144698
+ $r = time.Sleep(new time.Duration(1, 705032704)); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
144699
+ /* continue; */ $s = 2; continue;
144700
+ /* } */ case 11:
144701
+ $r = time.Sleep(new time.Duration(0, 1000000000)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
144702
+ /* } */ $s = 2; continue; case 3:
144703
+ $s = -1; return;
144704
+ /* */ } return; } if ($f === undefined) { $f = { $blk: ScreenWindow.ptr.prototype.startStatsSyncing }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.clientStats = clientStats; $f.data = data; $f.err = err; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
144705
+ };
144706
+ ScreenWindow.prototype.startStatsSyncing = function() { return this.$val.startStatsSyncing(); };
144501
144707
  ScreenWindow.ptr.prototype.openScreen = function() {
144502
- var _r, _r$1, _r$2, _tuple, _tuple$1, conn, connect, err, lastFrameID, msgData, w, $s, $r;
144503
- /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; conn = $f.conn; connect = $f.connect; err = $f.err; lastFrameID = $f.lastFrameID; msgData = $f.msgData; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
144708
+ var _r, _r$1, _r$2, _tuple, _tuple$1, conn, connect, err, lastFrameID, maxPacketSize, msgData, w, $s, $r;
144709
+ /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; conn = $f.conn; connect = $f.connect; err = $f.err; lastFrameID = $f.lastFrameID; maxPacketSize = $f.maxPacketSize; msgData = $f.msgData; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
144504
144710
  w = [w];
144505
144711
  w[0] = this;
144506
144712
  err = $ifaceNil;
@@ -144523,7 +144729,8 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
144523
144729
  if (!(w[0].frameCollector === ptrType$5.nil)) {
144524
144730
  lastFrameID = w[0].frameCollector.lastFullFrameID;
144525
144731
  }
144526
- w[0].frameCollector = NewFrameCollector(conn, w[0].stats, lastFrameID);
144732
+ maxPacketSize = netpacket.GetMaxPacketSize(w[0].screenDriver);
144733
+ w[0].frameCollector = NewFrameCollector(conn, w[0].stats, lastFrameID, maxPacketSize);
144527
144734
  w[0].screenSender = netclient.NewMessageSender(conn);
144528
144735
  msgData = (new sliceType($stringToBytes(w[0].clientID + w[0].clientSecret + w[0].screenID)));
144529
144736
  _r$2 = w[0].screenSender.Send(1, msgData); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
@@ -144576,7 +144783,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
144576
144783
  /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f.err$1 = err$1; $f.originalHealthchecker = originalHealthchecker; $f.originalScreenConn = originalScreenConn; $f.originalScreenSender = originalScreenSender; $f.$s = $s; $f.$r = $r; return $f;
144577
144784
  }; })(w), []);
144578
144785
  $s = -1; return $ifaceNil;
144579
- /* */ } return; } if ($f === undefined) { $f = { $blk: ScreenWindow.ptr.prototype.openScreen }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.conn = conn; $f.connect = connect; $f.err = err; $f.lastFrameID = lastFrameID; $f.msgData = msgData; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
144786
+ /* */ } return; } if ($f === undefined) { $f = { $blk: ScreenWindow.ptr.prototype.openScreen }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.conn = conn; $f.connect = connect; $f.err = err; $f.lastFrameID = lastFrameID; $f.maxPacketSize = maxPacketSize; $f.msgData = msgData; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
144580
144787
  };
144581
144788
  ScreenWindow.prototype.openScreen = function() { return this.$val.openScreen(); };
144582
144789
  ScreenWindow.ptr.prototype.startStream = function() {
@@ -144592,7 +144799,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
144592
144799
  if (!($interfaceIsEqual(err, $ifaceNil))) {
144593
144800
  $s = -1; return err;
144594
144801
  }
144595
- w[0].x264Renderer = NewX264FrameRenderer(screenBuffer, w[0].window);
144802
+ w[0].x264Renderer = NewX264FrameRenderer(screenBuffer, w[0].window, w[0].stats);
144596
144803
  $go((function(w) { return function $b() {
144597
144804
  var _r$1, _tuple$1, err$1, frame, $s, $r;
144598
144805
  /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple$1 = $f._tuple$1; err$1 = $f.err$1; frame = $f.frame; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
@@ -144650,9 +144857,9 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
144650
144857
  /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: ScreenWindow.ptr.prototype.renderFrame }; } $f._1 = _1; $f.frame = frame; $f.w = w; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
144651
144858
  };
144652
144859
  ScreenWindow.prototype.renderFrame = function(frame) { return this.$val.renderFrame(frame); };
144653
- NewX264FrameRenderer = function(screenBuffer, window$1) {
144654
- var screenBuffer, window$1;
144655
- return new X264FrameRenderer.ptr(screenBuffer, window$1, ptrType$12.nil);
144860
+ NewX264FrameRenderer = function(screenBuffer, window$1, stats$1) {
144861
+ var screenBuffer, stats$1, window$1;
144862
+ return new X264FrameRenderer.ptr(screenBuffer, window$1, stats$1, ptrType$12.nil);
144656
144863
  };
144657
144864
  $pkg.NewX264FrameRenderer = NewX264FrameRenderer;
144658
144865
  X264FrameRenderer.ptr.prototype.Render = function(frame) {
@@ -144674,8 +144881,10 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
144674
144881
  $s = -1; return;
144675
144882
  /* } */ case 5:
144676
144883
  /* } */ case 2:
144884
+ r.stats.NotifyFrameDecodeStarted();
144677
144885
  _r$1 = r.dec.Decode(frame.buffer, r.screenBuffer); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
144678
144886
  err = _r$1;
144887
+ r.stats.NotifyFrameDecodeEnded();
144679
144888
  $deferred.push([$methodVal(r.dec, "Release"), [r.screenBuffer]]);
144680
144889
  /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 8; continue; }
144681
144890
  /* */ $s = 9; continue;
@@ -144683,6 +144892,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
144683
144892
  $r = errs.Print("Frame cannot be decoded", err); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
144684
144893
  $s = -1; return;
144685
144894
  /* } */ case 9:
144895
+ r.stats.NotifyFrameRenderStarted();
144686
144896
  _arg = new image.Point.ptr(0, 0);
144687
144897
  _arg$1 = r.screenBuffer;
144688
144898
  _r$2 = r.screenBuffer.Bounds(); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
@@ -144690,6 +144900,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
144690
144900
  $r = r.window.UploadYCbCr(_arg, _arg$1, _arg$2); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
144691
144901
  _r$3 = r.window.Publish(); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
144692
144902
  _r$3;
144903
+ r.stats.NotifyFrameRenderEnded();
144693
144904
  $s = -1; return;
144694
144905
  /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: X264FrameRenderer.ptr.prototype.Render }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.err = err; $f.frame = frame; $f.r = r; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
144695
144906
  };
@@ -144697,15 +144908,15 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
144697
144908
  ptrType$1.methods = [{prop: "GetTimestmap", name: "GetTimestmap", pkg: "", typ: $funcType([], [$Uint64], false)}];
144698
144909
  ptrType$5.methods = [{prop: "CollectFrame", name: "CollectFrame", pkg: "", typ: $funcType([], [ptrType$1, $error], false)}];
144699
144910
  ptrType$3.methods = [{prop: "CreateProcessInfo", name: "CreateProcessInfo", pkg: "", typ: $funcType([$String, $Int], [$error], false)}, {prop: "RemoveProcessInfo", name: "RemoveProcessInfo", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "WaitProcess", name: "WaitProcess", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "GetProcessInfo", name: "GetProcessInfo", pkg: "", typ: $funcType([$String], [ProcessInfo, $error], false)}, {prop: "ListScreenIDs", name: "ListScreenIDs", pkg: "", typ: $funcType([], [sliceType$2, $error], false)}, {prop: "getUserProcessDirPath", name: "getUserProcessDirPath", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$String], false)}];
144700
- ptrType$14.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "OnClose", name: "OnClose", pkg: "", typ: $funcType([funcType], [], false)}, {prop: "startWindow", name: "startWindow", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "startClipboard", name: "startClipboard", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "retriableOpen", name: "retriableOpen", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([$Int, funcType$1], [$error], false)}, {prop: "openMetadata", name: "openMetadata", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "startTimestampSyncing", name: "startTimestampSyncing", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [], false)}, {prop: "openScreen", name: "openScreen", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "startStream", name: "startStream", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "renderFrame", name: "renderFrame", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([ptrType$1], [], false)}];
144911
+ ptrType$14.methods = [{prop: "Start", name: "Start", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "OnClose", name: "OnClose", pkg: "", typ: $funcType([funcType], [], false)}, {prop: "startWindow", name: "startWindow", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "startClipboard", name: "startClipboard", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "retriableOpen", name: "retriableOpen", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([$Int, funcType$1], [$error], false)}, {prop: "openMetadata", name: "openMetadata", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "startTimestampSyncing", name: "startTimestampSyncing", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [], false)}, {prop: "startStatsSyncing", name: "startStatsSyncing", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [], false)}, {prop: "openScreen", name: "openScreen", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "startStream", name: "startStream", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([], [$error], false)}, {prop: "renderFrame", name: "renderFrame", pkg: "github.com/supraio/client-daemon/pkg/render", typ: $funcType([ptrType$1], [], false)}];
144701
144912
  ptrType$6.methods = [{prop: "Render", name: "Render", pkg: "", typ: $funcType([ptrType$1], [], false)}];
144702
144913
  Frame.init("github.com/supraio/client-daemon/pkg/render", [{prop: "frameType", name: "frameType", embedded: false, exported: false, typ: FrameType, tag: ""}, {prop: "buffer", name: "buffer", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "timestamp", name: "timestamp", embedded: false, exported: false, typ: $Uint64, tag: ""}]);
144703
- FrameCollector.init("github.com/supraio/client-daemon/pkg/render", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: netpacket.ReaderWriterCloser, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "framesMap", name: "framesMap", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "lastFullFrameID", name: "lastFullFrameID", embedded: false, exported: false, typ: $Uint16, tag: ""}]);
144914
+ FrameCollector.init("github.com/supraio/client-daemon/pkg/render", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: netpacket.ReaderWriterCloser, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "framesMap", name: "framesMap", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "lastFullFrameID", name: "lastFullFrameID", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "maxPacketSize", name: "maxPacketSize", embedded: false, exported: false, typ: $Int, tag: ""}]);
144704
144915
  FrameMapItem.init("github.com/supraio/client-daemon/pkg/render", [{prop: "buffer", name: "buffer", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "frameType", name: "frameType", embedded: false, exported: false, typ: FrameType, tag: ""}, {prop: "timestamp", name: "timestamp", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "frameID", name: "frameID", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "total", name: "total", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "received", name: "received", embedded: false, exported: false, typ: $Uint16, tag: ""}]);
144705
144916
  ProcessInfo.init("", [{prop: "ScreenID", name: "ScreenID", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Pid", name: "Pid", embedded: false, exported: true, typ: $Int, tag: ""}]);
144706
144917
  ProcessInfoManager.init("github.com/supraio/client-daemon/pkg/render", [{prop: "username", name: "username", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "processDir", name: "processDir", embedded: false, exported: false, typ: $String, tag: ""}]);
144707
- ScreenWindow.init("github.com/supraio/client-daemon/pkg/render", [{prop: "processInfoManager", name: "processInfoManager", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "screenDriver", name: "screenDriver", embedded: false, exported: false, typ: netpacket.Driver, tag: ""}, {prop: "screenHost", name: "screenHost", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "metadataDriver", name: "metadataDriver", embedded: false, exported: false, typ: netstream.Driver, tag: ""}, {prop: "metadataHost", name: "metadataHost", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "processPath", name: "processPath", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "clientID", name: "clientID", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "clientSecret", name: "clientSecret", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "screenID", name: "screenID", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "secure", name: "secure", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "screenSize", name: "screenSize", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "renderMutex", name: "renderMutex", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "timeoutDuration", name: "timeoutDuration", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "closed", name: "closed", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "onClose", name: "onClose", embedded: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "window", name: "window", embedded: false, exported: false, typ: screen.Window, tag: ""}, {prop: "screen", name: "screen", embedded: false, exported: false, typ: screen.Screen, tag: ""}, {prop: "screenConn", name: "screenConn", embedded: false, exported: false, typ: netpacket.ReaderWriterCloser, tag: ""}, {prop: "screenReconnecting", name: "screenReconnecting", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "metadataServer", name: "metadataServer", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "frameCollector", name: "frameCollector", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "x264Renderer", name: "x264Renderer", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "screenSender", name: "screenSender", embedded: false, exported: false, typ: message.Sender, tag: ""}, {prop: "metadataSender", name: "metadataSender", embedded: false, exported: false, typ: message.Sender, tag: ""}, {prop: "metadataResponsiveSender", name: "metadataResponsiveSender", embedded: false, exported: false, typ: ptrType$7, tag: ""}, {prop: "sizeHandler", name: "sizeHandler", embedded: false, exported: false, typ: ptrType$8, tag: ""}, {prop: "keyHandler", name: "keyHandler", embedded: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "mouseHandler", name: "mouseHandler", embedded: false, exported: false, typ: ptrType$10, tag: ""}, {prop: "healthchecker", name: "healthchecker", embedded: false, exported: false, typ: ptrType$11, tag: ""}, {prop: "keyEventChan", name: "keyEventChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "mouseEventChan", name: "mouseEventChan", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "sizeEventChan", name: "sizeEventChan", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "focusEventChan", name: "focusEventChan", embedded: false, exported: false, typ: chanType$3, tag: ""}, {prop: "winCloseChannel", name: "winCloseChannel", embedded: false, exported: false, typ: chanType$4, tag: ""}]);
144708
- X264FrameRenderer.init("github.com/supraio/client-daemon/pkg/render", [{prop: "screenBuffer", name: "screenBuffer", embedded: false, exported: false, typ: screen.Buffer, tag: ""}, {prop: "window", name: "window", embedded: false, exported: false, typ: screen.Window, tag: ""}, {prop: "dec", name: "dec", embedded: false, exported: false, typ: ptrType$12, tag: ""}]);
144918
+ ScreenWindow.init("github.com/supraio/client-daemon/pkg/render", [{prop: "processInfoManager", name: "processInfoManager", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "screenDriver", name: "screenDriver", embedded: false, exported: false, typ: netpacket.Driver, tag: ""}, {prop: "screenHost", name: "screenHost", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "metadataDriver", name: "metadataDriver", embedded: false, exported: false, typ: netstream.Driver, tag: ""}, {prop: "metadataHost", name: "metadataHost", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "clientID", name: "clientID", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "clientSecret", name: "clientSecret", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "screenID", name: "screenID", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "secure", name: "secure", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "screenSize", name: "screenSize", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "renderMutex", name: "renderMutex", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "timeoutDuration", name: "timeoutDuration", embedded: false, exported: false, typ: time.Duration, tag: ""}, {prop: "closed", name: "closed", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "onClose", name: "onClose", embedded: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "window", name: "window", embedded: false, exported: false, typ: screen.Window, tag: ""}, {prop: "screen", name: "screen", embedded: false, exported: false, typ: screen.Screen, tag: ""}, {prop: "screenConn", name: "screenConn", embedded: false, exported: false, typ: netpacket.ReaderWriterCloser, tag: ""}, {prop: "screenReconnecting", name: "screenReconnecting", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "metadataServer", name: "metadataServer", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "frameCollector", name: "frameCollector", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "x264Renderer", name: "x264Renderer", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "screenSender", name: "screenSender", embedded: false, exported: false, typ: message.Sender, tag: ""}, {prop: "metadataSender", name: "metadataSender", embedded: false, exported: false, typ: message.Sender, tag: ""}, {prop: "metadataResponsiveSender", name: "metadataResponsiveSender", embedded: false, exported: false, typ: ptrType$7, tag: ""}, {prop: "sizeHandler", name: "sizeHandler", embedded: false, exported: false, typ: ptrType$8, tag: ""}, {prop: "keyHandler", name: "keyHandler", embedded: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "mouseHandler", name: "mouseHandler", embedded: false, exported: false, typ: ptrType$10, tag: ""}, {prop: "healthchecker", name: "healthchecker", embedded: false, exported: false, typ: ptrType$11, tag: ""}, {prop: "keyEventChan", name: "keyEventChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "mouseEventChan", name: "mouseEventChan", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "sizeEventChan", name: "sizeEventChan", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "focusEventChan", name: "focusEventChan", embedded: false, exported: false, typ: chanType$3, tag: ""}, {prop: "winCloseChannel", name: "winCloseChannel", embedded: false, exported: false, typ: chanType$4, tag: ""}]);
144919
+ X264FrameRenderer.init("github.com/supraio/client-daemon/pkg/render", [{prop: "screenBuffer", name: "screenBuffer", embedded: false, exported: false, typ: screen.Buffer, tag: ""}, {prop: "window", name: "window", embedded: false, exported: false, typ: screen.Window, tag: ""}, {prop: "stats", name: "stats", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "dec", name: "dec", embedded: false, exported: false, typ: ptrType$12, tag: ""}]);
144709
144920
  $init = function() {
144710
144921
  $pkg.$init = function() {};
144711
144922
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: