|
@@ -6,6 +6,7 @@
|
|
* Copyright 2017 (c) Stefan Profanter, fortiss GmbH
|
|
* Copyright 2017 (c) Stefan Profanter, fortiss GmbH
|
|
* Copyright 2018 (c) Ari Breitkreuz, fortiss GmbH
|
|
* Copyright 2018 (c) Ari Breitkreuz, fortiss GmbH
|
|
* Copyright 2018 (c) Thomas Stalder, Blue Time Concept SA
|
|
* Copyright 2018 (c) Thomas Stalder, Blue Time Concept SA
|
|
|
|
+ * Copyright 2018 (c) Fabian Arndt, Root-Core
|
|
*/
|
|
*/
|
|
|
|
|
|
#include "ua_server_internal.h"
|
|
#include "ua_server_internal.h"
|
|
@@ -80,6 +81,26 @@ void UA_MonitoredItem_delete(UA_Server *server, UA_MonitoredItem *monitoredItem)
|
|
}
|
|
}
|
|
#endif /* UA_ENABLE_SUBSCRIPTIONS_EVENTS */
|
|
#endif /* UA_ENABLE_SUBSCRIPTIONS_EVENTS */
|
|
|
|
|
|
|
|
+ /* Deregister MonitoredItem in userland */
|
|
|
|
+ if(server->config.monitoredItemRegisterCallback && monitoredItem->registered) {
|
|
|
|
+ /* Get the session context. Local MonitoredItems don't have a subscription. */
|
|
|
|
+ UA_Session *session = NULL;
|
|
|
|
+ if(monitoredItem->subscription)
|
|
|
|
+ session = monitoredItem->subscription->session;
|
|
|
|
+ if(!session)
|
|
|
|
+ session = &server->adminSession;
|
|
|
|
+
|
|
|
|
+ /* Get the node context */
|
|
|
|
+ void *targetContext = NULL;
|
|
|
|
+ UA_Server_getNodeContext(server, monitoredItem->monitoredNodeId, &targetContext);
|
|
|
|
+
|
|
|
|
+ /* Deregister */
|
|
|
|
+ server->config.monitoredItemRegisterCallback(server,
|
|
|
|
+ &session->sessionId, session->sessionHandle,
|
|
|
|
+ &monitoredItem->monitoredNodeId, targetContext,
|
|
|
|
+ monitoredItem->attributeId, true);
|
|
|
|
+ }
|
|
|
|
+
|
|
/* Remove the monitored item */
|
|
/* Remove the monitored item */
|
|
if(monitoredItem->listEntry.le_prev != NULL)
|
|
if(monitoredItem->listEntry.le_prev != NULL)
|
|
LIST_REMOVE(monitoredItem, listEntry);
|
|
LIST_REMOVE(monitoredItem, listEntry);
|