public Result <DataResponse> GetEventData(OpcUAQuery query, NodeId startNodeId, Opc.Ua.EventFilter eventFilter)
{
var nodeCache = _nodeCacheFactory.Create(_session);
eventFilter.AddSelectClause(ObjectTypeIds.BaseEventType, "SourceNode");
eventFilter.AddSelectClause(ObjectTypeIds.BaseEventType, "EventType");
var eventFilterValues = GetEventFilterValues(startNodeId, eventFilter);
if (eventFilterValues == null)
{
var monitorItem = AddMonitorItem(startNodeId, eventFilter);
eventFilterValues = new EventFilterValues(monitorItem, query, eventFilter);
if (!TryAddEventFilterValues(startNodeId, eventFilterValues))
{
RemoveMonitorItem(monitorItem);
eventFilterValues = null;
}
}
lock (_eventData)
{
if (eventFilterValues == null)
{
eventFilterValues = GetEventFilterValues(startNodeId, eventFilter);
}
if (eventFilterValues != null)
{
return(_eventDataResponse.CreateEventSubscriptionDataResponse(eventFilterValues.Values.Values, query, nodeCache));
}
}
return(new Result <DataResponse>(StatusCodes.BadUnexpectedError, ""));
}