uatools 1.0.0
 
Loading...
Searching...
No Matches
subscription.hpp
Go to the documentation of this file.
1
6
7#ifndef ESO_UATOOLS_PROTOCOL_OPEN62541_SUBSCRIPTION_H_
8#define ESO_UATOOLS_PROTOCOL_OPEN62541_SUBSCRIPTION_H_
9
10#include <map>
11#include <cassert>
12#include <cstdio>
13#include <fstream>
14#include <iostream>
15#include <memory>
16#include <stdexcept>
17#include <vector>
18
19// Third party header files
20#ifdef UA_ENABLE_AMALGAMATION
21# include <open62541.h>
22#else
23# include <open62541/types.h>
24# include <open62541/client.h>
25#endif
27
29
31class Subscription;
32
33using SubscriptionPtr = std::shared_ptr<Subscription>;
34using SubscriptionConstPtr = std::shared_ptr<const Subscription>;
35
40public:
41
51
54
62 virtual void OnDataChange(
63 const UA_UInt32 monitor_id,
64 UA_DataValue* value
65 );
66
80 UA_StatusCode AddMonitoredItem(UA_Client* client,
81 MonitoredItemPtr monitoredItem);
82
92 UA_StatusCode AddMonitoredItems(UA_Client* client,
93 std::vector<MonitoredItemPtr>& mon_vector,
94 std::string& error_msg);
95
96
101 UA_StatusCode RemoveMonitoredItems(UA_Client* client, bool connection_active = true);
102
107 virtual void onError();
108
113 virtual void onStatusChange(bool status);
114
119 UA_StatusCode AddSubscription(UA_Client* client, const UA_CreateSubscriptionRequest& request);
120
124 UA_UInt32 GetSubscriptionId() const {
125 return m_subscription_id;
126 }
127
128 void SetSubscriptionId(const UA_UInt32 id) {
129 m_subscription_id = id;
130 }
131
132public:
138
139 std::map<std::shared_ptr<MonitoredItem>,
140 std::vector<IDataChangeHandler*> > m_dataChangeHandler;
141
142 std::map<UA_Int32, std::shared_ptr<MonitoredItem>> m_monitored_items;
143
144
145 static void DataChangesCallback(UA_Client* client,
146 UA_UInt32 subId,
147 void* subContext,
148 UA_UInt32 monId,
149 void* context,
150 UA_DataValue* value);
151
152 static void DeleteSubscriptionCallback(UA_Client* client, UA_UInt32 subscriptionId,
153 void* subContext);
154
155private:
156 UA_Int32 m_subscription_id;
157 IDataChangeHandler* m_handler;
158};
159
160}
161
162#endif // !IESO_UATOOLS_PROTOCOL_OPEN62541_SUBSCRIPTION_H_
The IDataChangeHandler class Defines an entry point for data change notifications.
Definition iDataChangeHandler.hpp:36
Definition subscription.hpp:39
UA_UInt32 GetSubscriptionId() const
Return subscription ID.
Definition subscription.hpp:124
std::map< std::shared_ptr< MonitoredItem >, std::vector< IDataChangeHandler * > > m_dataChangeHandler
Definition subscription.hpp:140
virtual void onError()
Handler for session communication errors.
Definition subscription.cpp:181
UA_StatusCode RemoveMonitoredItems(UA_Client *client, bool connection_active=true)
RemoveMonitoredItem.
Definition subscription.cpp:132
static void DataChangesCallback(UA_Client *client, UA_UInt32 subId, void *subContext, UA_UInt32 monId, void *context, UA_DataValue *value)
Definition subscription.cpp:199
virtual void OnDataChange(const UA_UInt32 monitor_id, UA_DataValue *value)
Handler of data changes.
Definition subscription.cpp:169
Subscription(IDataChangeHandler *handler)
Subscription.
Definition subscription.cpp:26
UA_StatusCode AddMonitoredItem(UA_Client *client, MonitoredItemPtr monitoredItem)
Add an new monitoring item.
Definition subscription.cpp:34
static SubscriptionPtr Create(IDataChangeHandler *handler)
Create a new subscription.
Definition subscription.cpp:22
~Subscription()
Definition subscription.cpp:30
virtual void onStatusChange(bool status)
Handler for session status change.
Definition subscription.cpp:184
UA_StatusCode AddSubscription(UA_Client *client, const UA_CreateSubscriptionRequest &request)
Definition subscription.cpp:188
std::map< UA_Int32, std::shared_ptr< MonitoredItem > > m_monitored_items
Definition subscription.hpp:142
UA_StatusCode AddMonitoredItems(UA_Client *client, std::vector< MonitoredItemPtr > &mon_vector, std::string &error_msg)
Add a vector of monitoring items.
Definition subscription.cpp:51
void SetSubscriptionId(const UA_UInt32 id)
Definition subscription.hpp:128
static void DeleteSubscriptionCallback(UA_Client *client, UA_UInt32 subscriptionId, void *subContext)
Definition subscription.cpp:215
Definition iDataChangeHandler.hpp:27
std::shared_ptr< Subscription > SubscriptionPtr
Definition subscription.hpp:33
std::shared_ptr< const Subscription > SubscriptionConstPtr
Definition subscription.hpp:34
std::shared_ptr< MonitoredItem > MonitoredItemPtr
Definition monitoredItem.hpp:21