UNPKG

node-opcua-client

Version:

pure nodejs OPCUA SDK - module client

139 lines 6.42 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ClientMonitoredItemToolbox = void 0; /** * @module node-opcua-client */ const chalk_1 = __importDefault(require("chalk")); const node_opcua_assert_1 = require("node-opcua-assert"); const node_opcua_debug_1 = require("node-opcua-debug"); const node_opcua_service_subscription_1 = require("node-opcua-service-subscription"); const debugLog = (0, node_opcua_debug_1.make_debugLog)(__filename); const doDebug = (0, node_opcua_debug_1.checkDebugFlag)(__filename); /** * @internal */ class ClientMonitoredItemToolbox { static _toolbox_monitor(subscription, timestampsToReturn, monitoredItems, done) { (0, node_opcua_assert_1.assert)(typeof done === "function"); // we expect subscription to be valid and have a valid session if (!subscription.hasSession) { const err0 = new Error("Invalid subscription"); if (done) { return done(err0); } return; } // may be the subscription has been terminated or is not fully initialize, in the meantime if (!subscription.isActive) { const err1 = new Error("Subscription has been terminated or is not fully initialized"); if (done) { return done(err1); } return; } const itemsToCreate = []; for (const monitoredItem of monitoredItems) { const monitoredItemI = monitoredItem; const itemToCreate = monitoredItemI._prepare_for_monitoring(); if (typeof itemToCreate.error === "string") { return done(new Error(itemToCreate.error)); } itemsToCreate.push(itemToCreate); } const createMonitorItemsRequest = new node_opcua_service_subscription_1.CreateMonitoredItemsRequest({ itemsToCreate, subscriptionId: subscription.subscriptionId, timestampsToReturn }); for (let i = 0; i < monitoredItems.length; i++) { const monitoredItem = monitoredItems[i]; monitoredItem._before_create(); } const session = subscription.session; (0, node_opcua_assert_1.assert)(session, "expecting a valid session attached to the subscription "); session.createMonitoredItems(createMonitorItemsRequest, (err, response) => { /* c8 ignore next */ if (err) { debugLog(chalk_1.default.red("ClientMonitoredItemBase#_toolbox_monitor: ERROR in createMonitoredItems ", err.message)); } else { /* c8 ignore next */ if (!response) { return done(new Error("Internal Error")); } response.results = response.results || []; for (let i = 0; i < response.results.length; i++) { const monitoredItemResult = response.results[i]; const monitoredItem = monitoredItems[i]; monitoredItem._after_create(monitoredItemResult); } } done(err ? err : undefined); }); } static _toolbox_modify(subscription, monitoredItems, parameters, timestampsToReturn, callback) { (0, node_opcua_assert_1.assert)(callback === undefined || typeof callback === "function"); const itemsToModify = monitoredItems.map((monitoredItem) => { const clientHandle = monitoredItem.monitoringParameters.clientHandle; (0, node_opcua_assert_1.assert)(clientHandle !== 4294967295); return new node_opcua_service_subscription_1.MonitoredItemModifyRequest({ monitoredItemId: monitoredItem.monitoredItemId, requestedParameters: { ...parameters, clientHandle } }); }); const modifyMonitoredItemsRequest = new node_opcua_service_subscription_1.ModifyMonitoredItemsRequest({ itemsToModify, subscriptionId: subscription.subscriptionId, timestampsToReturn }); const session = subscription.session; (0, node_opcua_assert_1.assert)(session, "expecting a valid session attached to the subscription "); session.modifyMonitoredItems(modifyMonitoredItemsRequest, (err, response) => { /* c8 ignore next */ if (err) { return callback(err); } if (!response || !(response instanceof node_opcua_service_subscription_1.ModifyMonitoredItemsResponse)) { return callback(new Error("internal error")); } response.results = response.results || []; (0, node_opcua_assert_1.assert)(response.results.length === monitoredItems.length); const res = response.results[0]; /* c8 ignore next */ if (response.results.length === 1 && res.statusCode.isNotGood()) { return callback(new Error("Error" + res.statusCode.toString())); } callback(null, response.results); }); } static _toolbox_setMonitoringMode(subscription, monitoredItems, monitoringMode, callback) { const monitoredItemIds = monitoredItems.map((monitoredItem) => monitoredItem.monitoredItemId); const setMonitoringModeRequest = { monitoredItemIds, monitoringMode, subscriptionId: subscription.subscriptionId }; const session = subscription.session; (0, node_opcua_assert_1.assert)(session, "expecting a valid session attached to the subscription "); session.setMonitoringMode(setMonitoringModeRequest, (err, response) => { if (err) { return callback(err); } monitoredItems.forEach((monitoredItem) => { monitoredItem.internalSetMonitoringMode(monitoringMode); }); response = response; response.results = response.results || []; callback(null, response.results); }); } } exports.ClientMonitoredItemToolbox = ClientMonitoredItemToolbox; //# sourceMappingURL=client_monitored_item_toolbox.js.map