8#include "open62541pp/config.hpp"
15#ifdef UA_ENABLE_SUBSCRIPTIONS
41template <
typename Connection>
53 subscriptionId_(std::is_same_v<Connection, Server> ? 0U :
subscriptionId) {}
67 return subscriptionId_;
74 [[deprecated(
"use monitoredItems() instead")]]
86 response.responseHeader().serviceResult().throwIfBad();
110 std::move(onDataChange),
125 id, attribute, MonitoringMode::Reporting, parameters, std::move(onDataChange)
158 return subscribeEvent(
id, MonitoringMode::Reporting, parameters, std::move(onEvent));
168 Connection* connection_;
177 return (lhs.connection() == rhs.connection()) && (lhs.subscriptionId() == rhs.subscriptionId());
183 return !(lhs == rhs);
UA_ExtensionObject wrapper class.
High-level monitored item class.
constexpr void throwIfBad() const
Throw a BadStatus exception if the status code is bad.
High-level subscription class.
void deleteSubscription()
Delete this subscription.
IntegerId subscriptionId() const noexcept
Get the server-assigned identifier of this subscription.
MonitoredItem< Connection > subscribeDataChange(const NodeId &id, AttributeId attribute, MonitoringMode monitoringMode, const MonitoringParametersEx ¶meters, DataChangeNotificationCallback onDataChange)
Create a monitored item for data change notifications.
const Connection & connection() const noexcept
Get the server/client instance.
void setSubscriptionParameters(const SubscriptionParameters ¶meters)
Modify this subscription.
Connection & connection() noexcept
Get the server/client instance.
bool operator!=(const Subscription< T > &lhs, const Subscription< T > &rhs) noexcept
bool operator==(const Subscription< T > &lhs, const Subscription< T > &rhs) noexcept
MonitoredItem< Connection > subscribeDataChange(const NodeId &id, AttributeId attribute, DataChangeNotificationCallback onDataChange)
Create a monitored item for data change notifications (default settings).
std::vector< MonitoredItem< Connection > > monitoredItems()
Get all local monitored items.
Subscription(Connection &connection, const SubscriptionParameters ¶meters={})
Create a new subscription.
MonitoredItem< Connection > subscribeEvent(const NodeId &id, const EventFilter &eventFilter, EventNotificationCallback onEvent)
Create a monitored item for event notifications (default settings).
void setPublishingMode(bool publishing)
Enable/disable publishing of notification messages.
MonitoredItem< Connection > subscribeEvent(const NodeId &id, MonitoringMode monitoringMode, const MonitoringParametersEx ¶meters, EventNotificationCallback onEvent)
Create a monitored item for event notifications.
Subscription(Connection &connection, IntegerId subscriptionId) noexcept
Wrap an existing subscription.
std::vector< MonitoredItem< Connection > > getMonitoredItems()
UA_EventFilter wrapper class.
const StatusCode & statusCode() const noexcept
MonitoredItemCreateResult createMonitoredItemEvent(Client &connection, IntegerId subscriptionId, const ReadValueId &itemToMonitor, MonitoringMode monitoringMode, const MonitoringParametersEx ¶meters, EventNotificationCallback eventCallback, DeleteMonitoredItemCallback deleteCallback={})
Create and add a monitored item to a subscription for event notifications.
MonitoredItemCreateResult createMonitoredItemDataChange(T &connection, IntegerId subscriptionId, const ReadValueId &itemToMonitor, MonitoringMode monitoringMode, const MonitoringParametersEx ¶meters, DataChangeNotificationCallback dataChangeCallback, DeleteMonitoredItemCallback deleteCallback)
Create and add a monitored item to a subscription for data change notifications.
std::function< void(IntegerId subId, IntegerId monId, const DataValue &value)> DataChangeNotificationCallback
Data change notification callback.
std::function< void(IntegerId subId, IntegerId monId, Span< const Variant > eventFields)> EventNotificationCallback
Event notification callback.
StatusCode deleteSubscription(Client &connection, IntegerId subscriptionId) noexcept
Delete a single subscription.
ModifySubscriptionResponse modifySubscription(Client &connection, const ModifySubscriptionRequest &request) noexcept
Modify a subscription.
SetPublishingModeResponse setPublishingMode(Client &connection, const SetPublishingModeRequest &request) noexcept
Enable/disable publishing of notification messages of subscriptions.
MonitoringMode
Monitoring mode.
uint32_t IntegerId
IntegerId.
services::EventNotificationCallback EventNotificationCallback
services::DataChangeNotificationCallback DataChangeNotificationCallback
AttributeId
Attribute identifiers.
@ EventNotifier
Indicates if the node can be used to subscribe to events or the read/write historic events.
Extended monitoring parameters with default values from open62541.
ExtensionObject filter
Filter is used by the server to determine if the MonitoredItem should generate notifications.
Subscription parameters with default values from open62541.