UNPKG

@thingweb/node-red-node-wot

Version:
74 lines (73 loc) 3.36 kB
"use strict"; 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()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const servient_wrapper_1 = __importDefault(require("./servient-wrapper")); class ServientManager { static getInstance() { if (!ServientManager.instance) { ServientManager.instance = new ServientManager(); } return ServientManager.instance; } constructor() { this.servientWrappers = {}; console.debug("[debug] ServientManager constructor called."); } createServientWrapper(id, bindingType, params) { console.debug("[debug] createServientWrapper. ", id, bindingType, params); this.servientWrappers[id] = new servient_wrapper_1.default(bindingType, params); return this.servientWrappers[id]; } existServienetWrapper(id) { if (this.servientWrappers[id]) { return true; } return false; } removeServientWrapper(id) { return __awaiter(this, void 0, void 0, function* () { console.debug("[debug] removeServientWrapper. id: " + id); yield this.endServient(id); delete this.servientWrappers[id]; }); } endServient(id) { return __awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { console.debug("[debug] endServient called. id: " + id); const servientWrapper = this.servientWrappers[id]; const timeoutId = setTimeout(() => { console.warn("[warn] timeout happend while servient ending. id: " + id); resolve(); }, 10000); // If it does not end after 10 seconds, it is considered to be finished. try { yield servientWrapper.endServient(); console.debug("[debug] servient ended. id: " + id); clearTimeout(timeoutId); resolve(); } catch (err) { console.debug("[debug] failed to end servient. id: " + id + " error: " + err.toString()); clearTimeout(timeoutId); reject(err); } })); }); } getThing(id, thingName) { const servientWrapper = this.servientWrappers[id]; return servientWrapper === null || servientWrapper === void 0 ? void 0 : servientWrapper.getThing(thingName); } } exports.default = ServientManager;