- "use strict";
-
- /**
- * @module opcua.address_space
- */
- const assert = require("node-opcua-assert").assert;
- const util = require("util");
- const _ = require("underscore");
-
-
- const NodeClass = require("node-opcua-data-model").NodeClass;
- const AttributeIds = require("node-opcua-data-model").AttributeIds;
-
- const resolveNodeId = require("node-opcua-nodeid").resolveNodeId;
-
-
- const DataValue = require("node-opcua-data-value").DataValue;
- const DataType = require("node-opcua-variant").DataType;
- const StatusCodes = require("node-opcua-status-code").StatusCodes;
-
-
- const ec = require("node-opcua-basic-types");
-
- const BaseNode = require("./base_node").BaseNode;
- const SessionContext = require("./session_context").SessionContext;
-
-
- /**
- * @class UAObject
- * @param options
- * @constructor
- */
- function UAObject(options) {
- BaseNode.apply(this, arguments);
- this.eventNotifier = options.eventNotifier || 0;
- assert(_.isNumber(this.eventNotifier) && ec.isValidByte(this.eventNotifier));
- this.symbolicName = options.symbolicName || null;
- }
-
- util.inherits(UAObject, BaseNode);
- UAObject.prototype.nodeClass = NodeClass.Object;
- UAObject.typeDefinition = resolveNodeId("BaseObjectType");
-
- const getCurrentClock = require("node-opcua-date-time").getCurrentClock;
-
-
- UAObject.prototype.readAttribute = function (context, attributeId) {
-
- assert(context instanceof SessionContext);
-
- const now = getCurrentClock();
- const options = {};
- switch (attributeId) {
- case AttributeIds.EventNotifier:
- assert(ec.isValidByte(this.eventNotifier));
- options.value = {dataType: DataType.Byte, value: this.eventNotifier};
- options.serverTimestamp = now.timestamp;
- options.serverPicoseconds = now.picoseconds;
- options.statusCode = StatusCodes.Good;
- break;
- default:
- return BaseNode.prototype.readAttribute.call(this, context, attributeId);
- }
- return new DataValue(options);
- };
-
-
- UAObject.prototype.clone = function (options,optionalFilter,extraInfo) {
- const self = this;
- options = options || {};
- options = _.extend(_.clone(options),{
- eventNotifier: self.eventNotifier,
- symbolicName: self.symbolicName
- });
- const cloneObject = self._clone(UAObject,options, optionalFilter, extraInfo);
-
- //xx newObject.propagate_back_references();
- //xx newObject.install_extra_properties();
- return cloneObject;
- };
-
- exports.UAObject = UAObject;
- require("./ua_object_raiseEvent").install(UAObject);
-
-