

13:38, EEST

December 20, 2021

Good morning,
I have a question regarding subscription management:
when I have a server-side error, I intercept the requests to read and write the variables and raise an exception
…
@Override
public boolean onReadValue(ServiceContext serviceContext, NodeId nodeId, UaValueNode uaValueNode,
NumericRange numericRange, TimestampsToReturn timestampsToReturn, DateTime dateTime, DataValue dataValue)
throws StatusException {
if (error) {
throw new StatusException(StatusCodes.Bad_DataUnavailable);
return false;
}
@Override
public boolean onWriteValue(ServiceContext serviceContext, NodeId nodeId, UaValueNode uaValueNode,
NumericRange numericRange, DataValue dataValue) throws StatusException {
if (error) {
throw new StatusException(StatusCodes.Bad_NotSupported);
}
return false;
}
…
}
Would it be possible to do the same for subscriptions? I would like to notify an error for all active subscriptions
Thanks.
Best regards.
Francesco
14:48, EEST

December 21, 2011

You will need to update the variables that are affected by the error with ‘new DataValue(new StatusCode(StatusCodes.Bad_DataUnavailable))’.
If you have plenty of variables and prefer to just update the MonitoredItems directly, you need to keep track of them (via NodeManagerListener.onAfterCreateMonitoredItem/onDeleteMonitoredItem) and call notifyDataChange for each of them directly.
Also, when the error is gone, you should update the variables or MonitoredItems with valid values again.
1 Guest(s)
