Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
assert(dataValue !== self.oldDataValue, "recordValue expects different dataValue to be provided");
assert(!dataValue.value || dataValue.value !== self.oldDataValue.value, "recordValue expects different dataValue.value to be provided");
assert(!dataValue.value || dataValue.value.isValid(),"expecting a valid variant value");
const hasSemanticChanged = self.node && (self.node.semantic_version !== self._semantic_version);
//xx console.log("`\n----------------------------",skipChangeTest,self.clientHandle,
// self.node.listenerCount("value_changed"),self.node.nodeId.toString());
//xx console.log("events ---- ",self.node.eventNames().join("-"));
//xx console.log("indexRange = ",indexRange ? indexRange.toString() :"");
//xx console.log("self.itemToMonitor.indexRange = ",self.itemToMonitor.indexRange.toString());
if (!hasSemanticChanged && indexRange && self.itemToMonitor.indexRange) {
// we just ignore changes that do not fall within our range
// ( unless semantic bit has changed )
if (!NumericRange.overlap(indexRange,self.itemToMonitor.indexRange)) {
return; // no overlap !
}
}
assert( self.itemToMonitor,"must have a valid itemToMonitor(have this monitoredItem been disposed already ?");
// extract the range that we are interested with
dataValue = extractRange(dataValue, self.itemToMonitor.indexRange);
// istanbul ignore next
if (doDebug) {
debugLog("MonitoredItem#recordValue", self.node.nodeId.toString(), self.node.browseName.toString(), " has Changed = ", !sameDataValue(dataValue, self.oldDataValue));
}
// if semantic has changed, value need to be enqueued regardless of other assumptions
if (hasSemanticChanged) {
return self._enqueue_value(dataValue);
assert(!dataValue.value || dataValue.value.isValid(),
"expecting a valid variant value");
const hasSemanticChanged = this.node && ((this.node as any).semantic_version !== this._semantic_version);
// xx console.log("`\n----------------------------",skipChangeTest,this.clientHandle,
// this.node.listenerCount("value_changed"),this.node.nodeId.toString());
// xx console.log("events ---- ",this.node.eventNames().join("-"));
// xx console.log("indexRange = ",indexRange ? indexRange.toString() :"");
// xx console.log("this.itemToMonitor.indexRange = ",this.itemToMonitor.indexRange.toString());
if (!hasSemanticChanged && indexRange && this.itemToMonitor.indexRange) {
// we just ignore changes that do not fall within our range
// ( unless semantic bit has changed )
if (!NumericRange.overlap(indexRange as NumericalRange0, this.itemToMonitor.indexRange)) {
return; // no overlap !
}
}
assert(this.itemToMonitor, "must have a valid itemToMonitor(have this monitoredItem been disposed already ?");
// extract the range that we are interested with
dataValue = extractRange(dataValue, this.itemToMonitor.indexRange);
// istanbul ignore next
if (doDebug) {
debugLog("MonitoredItem#recordValue",
this.node!.nodeId.toString(),
this.node!.browseName.toString(), " has Changed = ", !sameDataValue(dataValue, this.oldDataValue!));
}
// if semantic has changed, value need to be enqueued regardless of other assumptions
}
}
*/
}
if (context.currentTime && !dataValue.serverTimestamp) {
dataValue.serverTimestamp = context.currentTime;
dataValue.serverPicoseconds = 0;
}
assert(context instanceof SessionContext);
// adjust arguments if optional indexRange Parameter is not given
let indexRange: NumericRange | null = null;
let callback: StatusCodeCallBack;
if (args.length === 1) {
indexRange = new NumericRange();
callback = args[0];
} else if (args.length === 2) {
indexRange = args[0];
callback = args[1];
} else {
throw new Error("Invalid Number of args");
}
assert(_.isFunction(callback));
assert(dataValue instanceof DataValue);
// index range could be string
indexRange = NumericRange.coerce(indexRange);
// test write permission
if (!this.isWritable(context)) {
return callback!(null, StatusCodes.BadNotWritable);
dataValue.sourceTimestamp = clock.timestamp;
dataValue.sourcePicoseconds = clock.picoseconds;
}
}
if (context.currentTime && !dataValue.serverTimestamp) {
dataValue.serverTimestamp = context.currentTime;
dataValue.serverPicoseconds = 0;
}
assert(context instanceof SessionContext);
// adjust arguments if optional indexRange Parameter is not given
if (!_.isFunction(callback) && _.isFunction(indexRange)) {
callback = indexRange;
indexRange = new NumericRange();
}
assert(_.isFunction(callback));
assert(dataValue instanceof DataValue);
indexRange = NumericRange.coerce(indexRange);
// test write permission
if (!self.isWritable(context)) {
return callback(null, StatusCodes.BadNotWritable);
}
if (!self.isUserWritable(context)) {
return callback(null, StatusCodes.BadUserAccessDenied);
}
// adjust special case
const variant = adjustVariant(self, dataValue.value);
public get binaryEncodingDefinition(): string {
const indexRange = new NumericRange();
const descriptionNode = this.binaryEncoding.findReferencesAsObject("HasDescription")[0];
const structureVar = descriptionNode.findReferencesAsObject(
"HasComponent", false)[0] as any as UAVariable;
const dataValue = structureVar.readValue(SessionContext.defaultContext, indexRange);
// xx if (!dataValue || !dataValue.value || !dataValue.value.value) { return "empty";}
return dataValue.value.value.toString();
}
let indexRange: NumericRange | null = null;
let callback: StatusCodeCallBack;
if (args.length === 1) {
indexRange = new NumericRange();
callback = args[0];
} else if (args.length === 2) {
indexRange = args[0];
callback = args[1];
} else {
throw new Error("Invalid Number of args");
}
assert(_.isFunction(callback));
assert(dataValue instanceof DataValue);
// index range could be string
indexRange = NumericRange.coerce(indexRange);
// test write permission
if (!this.isWritable(context)) {
return callback!(null, StatusCodes.BadNotWritable);
}
if (!this.isUserWritable(context)) {
return callback!(null, StatusCodes.BadUserAccessDenied);
}
// adjust special case
const variant = adjustVariant.call(this, dataValue.value);
const statusCode = this.checkVariantCompatibility(variant);
if (statusCode.isNot(StatusCodes.Good)) {
return callback!(null, statusCode);
}
if (context.currentTime && !dataValue.serverTimestamp) {
dataValue.serverTimestamp = context.currentTime;
dataValue.serverPicoseconds = 0;
}
assert(context instanceof SessionContext);
// adjust arguments if optional indexRange Parameter is not given
if (!_.isFunction(callback) && _.isFunction(indexRange)) {
callback = indexRange;
indexRange = new NumericRange();
}
assert(_.isFunction(callback));
assert(dataValue instanceof DataValue);
indexRange = NumericRange.coerce(indexRange);
// test write permission
if (!self.isWritable(context)) {
return callback(null, StatusCodes.BadNotWritable);
}
if (!self.isUserWritable(context)) {
return callback(null, StatusCodes.BadUserAccessDenied);
}
// adjust special case
const variant = adjustVariant(self, dataValue.value);
const statusCode = self.isValueInRange(variant);
if (statusCode.isNot(StatusCodes.Good)) {
return callback(null, statusCode);
}
public get xmlEncodingDefinition(): string {
const indexRange = new NumericRange();
const descriptionNode = this.xmlEncoding.findReferencesAsObject("HasDescription")[0];
const structureVar = descriptionNode.findReferencesAsObject(
"HasComponent", false)[0] as any as UAVariable;
const dataValue = structureVar.readValue(SessionContext.defaultContext, indexRange);
if (!dataValue || !dataValue.value || !dataValue.value.value) {
return "empty";
}
return dataValue.value.value.toString();
}
UADataType.prototype.__defineGetter__("xmlEncodingDefinition", function () {
const indexRange = new NumericRange();
const descriptionNode = this.xmlEncoding.findReferencesAsObject("HasDescription")[0];
const structureVar = descriptionNode.findReferencesAsObject("HasComponent",false)[0];
const dataValue = structureVar.readValue(SessionContext.defaultContext, indexRange);
if (!dataValue || !dataValue.value || !dataValue.value.value) {
return "empty";
}
return dataValue.value.value.toString();
});