2
0
mirror of https://github.com/esiur/esiur-js.git synced 2026-03-18 07:20:39 +00:00

restoring...

This commit is contained in:
2026-02-23 12:01:33 +03:00
parent b3080f5b96
commit 3c8ffa9340
3 changed files with 98 additions and 51 deletions

View File

@@ -5725,7 +5725,7 @@ var DistributedConnection = exports["default"] = /*#__PURE__*/function (_IStore)
key: "reconnect", key: "reconnect",
value: function () { value: function () {
var _reconnect = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() { var _reconnect = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
var toBeRestored, i, r, _i, _toBeRestored, _r, link, ar, dataType, data, id; var toBeRestored, i, r, toBeFetched, _i, _toBeRestored, _r, link, ar, dataType, data, id, _i2, _toBeFetched, _r2;
return _regenerator["default"].wrap(function _callee$(_context) { return _regenerator["default"].wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) { while (1) switch (_context.prev = _context.next) {
case 0: case 0:
@@ -5746,77 +5746,104 @@ var DistributedConnection = exports["default"] = /*#__PURE__*/function (_IStore)
r = (0, _classPrivateFieldGet25["default"])(this, _suspendedResources).values[i].deref(); r = (0, _classPrivateFieldGet25["default"])(this, _suspendedResources).values[i].deref();
if (r != null) toBeRestored.push(r); if (r != null) toBeRestored.push(r);
} }
toBeFetched = [];
_i = 0, _toBeRestored = toBeRestored; _i = 0, _toBeRestored = toBeRestored;
case 10: case 11:
if (!(_i < _toBeRestored.length)) { if (!(_i < _toBeRestored.length)) {
_context.next = 39; _context.next = 36;
break; break;
} }
_r = _toBeRestored[_i]; _r = _toBeRestored[_i];
link = _DC.DC.stringToBytes(_r._p.link); link = _DC.DC.stringToBytes(_r._p.link);
console.log("Restoring " + _r._p.link); if (!_r._p.attached) {
_context.prev = 14; _context.next = 17;
_context.next = 17; break;
return _classPrivateMethodGet(this, _sendRequest, _sendRequest2).call(this, _IIPPacketAction["default"].QueryLink).addUint16(link.length).addUint8Array(link).done(); }
console.log("Already restored " + _r._p.link);
return _context.abrupt("continue", 33);
case 17: case 17:
console.log("Relinking " + _r._p.link);
_context.prev = 18;
_context.next = 21;
return _classPrivateMethodGet(this, _sendRequest, _sendRequest2).call(this, _IIPPacketAction["default"].QueryLink).addUint16(link.length).addUint8Array(link).done();
case 21:
ar = _context.sent; ar = _context.sent;
dataType = ar[0]; dataType = ar[0];
data = ar[1]; data = ar[1];
if (!(dataType.identifier == _TransmissionType.TransmissionTypeIdentifier.ResourceList || dataType.identifier == _TransmissionType.TransmissionTypeIdentifier.List)) { if (dataType.identifier == _TransmissionType.TransmissionTypeIdentifier.ResourceList || dataType.identifier == _TransmissionType.TransmissionTypeIdentifier.List) {
_context.next = 28; // remove from suspended.
break; (0, _classPrivateFieldGet25["default"])(this, _suspendedResources).remove(_r._p.instanceId);
}
// remove from suspended.
(0, _classPrivateFieldGet25["default"])(this, _suspendedResources).remove(_r._p.instanceId);
// parse them as int // parse them as int
id = data.getUint32(8); // id changed ? id = data.getUint32(8); // id changed ?
if (id != _r._p.instanceId) _r._p.instanceId = id; if (id != _r._p.instanceId) _r._p.instanceId = id;
(0, _classPrivateFieldGet25["default"])(this, _neededResources).set(id, _r); (0, _classPrivateFieldGet25["default"])(this, _neededResources).set(id, _r);
_context.next = 27; toBeFetched.push(id);
return this.fetch(id, null); }
case 27: _context.next = 33;
console.log("Restored " + id);
case 28:
_context.next = 36;
break; break;
case 30: case 27:
_context.prev = 30; _context.prev = 27;
_context.t0 = _context["catch"](14); _context.t0 = _context["catch"](18);
if (!(_context.t0.code == _ExceptionCode["default"].ResourceNotFound)) { if (!(_context.t0.code == _ExceptionCode["default"].ResourceNotFound)) {
_context.next = 35; _context.next = 32;
break; break;
} }
_context.next = 36; _context.next = 33;
break; break;
case 35: case 32:
return _context.abrupt("break", 39); return _context.abrupt("break", 36);
case 36: case 33:
_i++; _i++;
_context.next = 10; _context.next = 11;
break; break;
case 39: case 36:
_context.next = 44; // fetch needed resources
break; console.log("Fetching...");
case 41: _i2 = 0, _toBeFetched = toBeFetched;
_context.prev = 41; case 38:
_context.t1 = _context["catch"](6); if (!(_i2 < _toBeFetched.length)) {
console.log(_context.t1); _context.next = 52;
case 44: break;
}
_r2 = _toBeFetched[_i2];
_context.prev = 40;
_context.next = 43;
return this.fetch(id, null);
case 43:
console.log("Restored " + id);
_context.next = 49; _context.next = 49;
break; break;
case 46: case 46:
_context.prev = 46; _context.prev = 46;
_context.t2 = _context["catch"](1); _context.t1 = _context["catch"](40);
return _context.abrupt("return", false); console.log(_context.t1);
case 49: case 49:
_i2++;
_context.next = 38;
break;
case 52:
_context.next = 57;
break;
case 54:
_context.prev = 54;
_context.t2 = _context["catch"](6);
console.log(_context.t2);
case 57:
_context.next = 62;
break;
case 59:
_context.prev = 59;
_context.t3 = _context["catch"](1);
return _context.abrupt("return", false);
case 62:
this._emit("resumed", this); this._emit("resumed", this);
return _context.abrupt("return", true); return _context.abrupt("return", true);
case 51: case 64:
case "end": case "end":
return _context.stop(); return _context.stop();
} }
}, _callee, this, [[1, 46], [6, 41], [14, 30]]); }, _callee, this, [[1, 59], [6, 54], [18, 27], [40, 46]]);
})); }));
function reconnect() { function reconnect() {
return _reconnect.apply(this, arguments); return _reconnect.apply(this, arguments);
@@ -8105,8 +8132,8 @@ function _keepAliveTimerElapsed2() {
} }
} }
if (toBeRemoved.length > 0) console.log("GC: " + toBeRemoved.length); if (toBeRemoved.length > 0) console.log("GC: " + toBeRemoved.length);
for (var _i2 = 0, _toBeRemoved = toBeRemoved; _i2 < _toBeRemoved.length; _i2++) { for (var _i3 = 0, _toBeRemoved = toBeRemoved; _i3 < _toBeRemoved.length; _i3++) {
var _id = _toBeRemoved[_i2]; var _id = _toBeRemoved[_i3];
(0, _classPrivateFieldGet25["default"])(self, _attachedResources).remove(_id); (0, _classPrivateFieldGet25["default"])(self, _attachedResources).remove(_id);
} }
}).error(function (ex) { }).error(function (ex) {

View File

@@ -1,6 +1,6 @@
{ {
"name": "esiur", "name": "esiur",
"version": "2.3.7", "version": "2.3.8",
"description": "Distributed Object Framework", "description": "Distributed Object Framework",
"main": "esiur.js", "main": "esiur.js",
"type": "module", "type": "module",

View File

@@ -1248,10 +1248,19 @@ export default class DistributedConnection extends IStore {
toBeRestored.push(r); toBeRestored.push(r);
} }
var toBeFetched = [];
for(let r of toBeRestored) for(let r of toBeRestored)
{ {
let link = DC.stringToBytes(r._p.link); let link = DC.stringToBytes(r._p.link);
console.log("Restoring " + r._p.link);
if (r._p.attached)
{
console.log("Already restored " + r._p.link);
continue;
}
console.log("Relinking " + r._p.link);
try try
{ {
@@ -1278,9 +1287,7 @@ export default class DistributedConnection extends IStore {
this.#neededResources.set(id, r); this.#neededResources.set(id, r);
await this.fetch(id, null); toBeFetched.push(id);
console.log("Restored " + id);
} }
} }
catch (ex) catch (ex)
@@ -1295,6 +1302,19 @@ export default class DistributedConnection extends IStore {
} }
} }
} }
// fetch needed resources
console.log("Fetching...");
for(let r of toBeFetched)
{
try {
await this.fetch(id, null);
console.log("Restored " + id);
} catch (exFetch){
console.log(exFetch);
}
}
} }
catch (ex) { catch (ex) {
console.log(ex); console.log(ex);