landstrasse
Version:
Strongly typed WAMP Client for browsers
75 lines • 2.62 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const deferred_1 = require("../../../util/deferred");
class Registration {
constructor(id, uri, handler, unregisterCallback) {
Object.defineProperty(this, "_id", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "_uri", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "_unregisterCallback", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "handler", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "unregisteredDeferred", {
enumerable: true,
configurable: true,
writable: true,
value: new deferred_1.default()
});
this._id = id;
this._uri = uri;
this._unregisterCallback = unregisterCallback;
this.handler = handler;
this.reinitCatch();
}
get id() {
return this._id;
}
get uri() {
return this._uri;
}
get unregistered() {
return this.unregisteredDeferred.promise;
}
unregister() {
return __awaiter(this, void 0, void 0, function* () {
yield this._unregisterCallback(this);
return this.unregistered;
});
}
//
// - Internal
//
reinitCatch(err) {
this.unregisteredDeferred = new deferred_1.default();
this.unregisteredDeferred.promise.catch((e) => this.reinitCatch(e));
}
}
exports.default = Registration;
//# sourceMappingURL=registration.js.map