Skip to content

Commit beeedcb

Browse files
OPCUA Driver Implementation
1 parent 409a9a2 commit beeedcb

16 files changed

Lines changed: 1132 additions & 1 deletion

Drivers/OPCUA/ACT/LibMCDriver_OPCUA.xml

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,30 @@ Custom implementation
295295
<param name="Value" type="string" pass="in" description="Node Value to write" />
296296
</method>
297297

298+
<method name="CreateEventSubscription" description="Creates an event subscription for an event notifier node.">
299+
<param name="NameSpace" type="uint32" pass="in" description="Namespace ID" />
300+
<param name="NodeName" type="string" pass="in" description="Event notifier node." />
301+
<param name="SelectFields" type="string" pass="in" description="Comma-separated event field names. Empty uses the default field list." />
302+
<param name="PublishingInterval" type="double" pass="in" description="Requested publishing interval in milliseconds." />
303+
<param name="QueueSize" type="uint32" pass="in" description="Monitored item queue size." />
304+
<param name="DiscardOldest" type="bool" pass="in" description="Discard oldest queued events if full." />
305+
<param name="SubscriptionID" type="uint32" pass="out" description="Created subscription id." />
306+
<param name="MonitoredItemID" type="uint32" pass="out" description="Created monitored item id." />
307+
</method>
308+
309+
<method name="DeleteEventSubscription" description="Deletes an event subscription and its monitored item.">
310+
<param name="SubscriptionID" type="uint32" pass="in" description="Subscription id." />
311+
<param name="MonitoredItemID" type="uint32" pass="in" description="Monitored item id." />
312+
</method>
313+
314+
<method name="PollEvent" description="Processes incoming notifications and returns the next queued event.">
315+
<param name="TimeoutMS" type="uint32" pass="in" description="Maximum time to wait for events. 0 for no wait." />
316+
<param name="HasEvent" type="bool" pass="out" description="True if an event was returned." />
317+
<param name="SubscriptionID" type="uint32" pass="out" description="Subscription id of the event." />
318+
<param name="MonitoredItemID" type="uint32" pass="out" description="Monitored item id of the event." />
319+
<param name="EventJSON" type="string" pass="out" description="Event fields encoded as JSON object." />
320+
</method>
321+
298322
</class>
299323

300324

@@ -344,4 +368,3 @@ End of Custom implementation
344368

345369
</component>
346370

347-

Drivers/OPCUA/ACT/LibOpen62541.xml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,30 @@
159159
<param name="Value" type="string" pass="in" description="Node Value to write" />
160160
</method>
161161

162+
<method name="CreateEventSubscription" description="Creates an event subscription for an event notifier node.">
163+
<param name="NameSpace" type="uint32" pass="in" description="Namespace ID" />
164+
<param name="NodeName" type="string" pass="in" description="Event notifier node." />
165+
<param name="SelectFields" type="string" pass="in" description="Comma-separated event field names. Empty uses the default field list." />
166+
<param name="PublishingInterval" type="double" pass="in" description="Requested publishing interval in milliseconds." />
167+
<param name="QueueSize" type="uint32" pass="in" description="Monitored item queue size." />
168+
<param name="DiscardOldest" type="bool" pass="in" description="Discard oldest queued events if full." />
169+
<param name="SubscriptionID" type="uint32" pass="out" description="Created subscription id." />
170+
<param name="MonitoredItemID" type="uint32" pass="out" description="Created monitored item id." />
171+
</method>
172+
173+
<method name="DeleteEventSubscription" description="Deletes an event subscription and its monitored item.">
174+
<param name="SubscriptionID" type="uint32" pass="in" description="Subscription id." />
175+
<param name="MonitoredItemID" type="uint32" pass="in" description="Monitored item id." />
176+
</method>
177+
178+
<method name="PollEvent" description="Processes incoming notifications and returns the next queued event.">
179+
<param name="TimeoutMS" type="uint32" pass="in" description="Maximum time to wait for events. 0 for no wait." />
180+
<param name="HasEvent" type="bool" pass="out" description="True if an event was returned." />
181+
<param name="SubscriptionID" type="uint32" pass="out" description="Subscription id of the event." />
182+
<param name="MonitoredItemID" type="uint32" pass="out" description="Monitored item id of the event." />
183+
<param name="EventJSON" type="string" pass="out" description="Event fields encoded as JSON object." />
184+
</method>
185+
162186

163187
</class>
164188

Drivers/OPCUA/Headers/CppDynamic/libmcdriver_opcua_dynamic.h

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,47 @@ typedef LibMCDriver_OPCUAResult (*PLibMCDriver_OPCUADriver_OPCUA_WriteDoublePtr)
255255
*/
256256
typedef LibMCDriver_OPCUAResult (*PLibMCDriver_OPCUADriver_OPCUA_WriteStringPtr) (LibMCDriver_OPCUA_Driver_OPCUA pDriver_OPCUA, LibMCDriver_OPCUA_uint32 nNameSpace, const char * pNodeName, const char * pValue);
257257

258+
/**
259+
* Creates an event subscription for an event notifier node.
260+
*
261+
* @param[in] pDriver_OPCUA - Driver_OPCUA instance.
262+
* @param[in] nNameSpace - Namespace ID
263+
* @param[in] pNodeName - Event notifier node.
264+
* @param[in] pSelectFields - Comma-separated event field names. Empty uses the default field list.
265+
* @param[in] dPublishingInterval - Requested publishing interval in milliseconds.
266+
* @param[in] nQueueSize - Monitored item queue size.
267+
* @param[in] bDiscardOldest - Discard oldest queued events if full.
268+
* @param[out] pSubscriptionID - Created subscription id.
269+
* @param[out] pMonitoredItemID - Created monitored item id.
270+
* @return error code or 0 (success)
271+
*/
272+
typedef LibMCDriver_OPCUAResult (*PLibMCDriver_OPCUADriver_OPCUA_CreateEventSubscriptionPtr) (LibMCDriver_OPCUA_Driver_OPCUA pDriver_OPCUA, LibMCDriver_OPCUA_uint32 nNameSpace, const char * pNodeName, const char * pSelectFields, LibMCDriver_OPCUA_double dPublishingInterval, LibMCDriver_OPCUA_uint32 nQueueSize, bool bDiscardOldest, LibMCDriver_OPCUA_uint32 * pSubscriptionID, LibMCDriver_OPCUA_uint32 * pMonitoredItemID);
273+
274+
/**
275+
* Deletes an event subscription and its monitored item.
276+
*
277+
* @param[in] pDriver_OPCUA - Driver_OPCUA instance.
278+
* @param[in] nSubscriptionID - Subscription id.
279+
* @param[in] nMonitoredItemID - Monitored item id.
280+
* @return error code or 0 (success)
281+
*/
282+
typedef LibMCDriver_OPCUAResult (*PLibMCDriver_OPCUADriver_OPCUA_DeleteEventSubscriptionPtr) (LibMCDriver_OPCUA_Driver_OPCUA pDriver_OPCUA, LibMCDriver_OPCUA_uint32 nSubscriptionID, LibMCDriver_OPCUA_uint32 nMonitoredItemID);
283+
284+
/**
285+
* Processes incoming notifications and returns the next queued event.
286+
*
287+
* @param[in] pDriver_OPCUA - Driver_OPCUA instance.
288+
* @param[in] nTimeoutMS - Maximum time to wait for events. 0 for no wait.
289+
* @param[out] pHasEvent - True if an event was returned.
290+
* @param[out] pSubscriptionID - Subscription id of the event.
291+
* @param[out] pMonitoredItemID - Monitored item id of the event.
292+
* @param[in] nEventJSONBufferSize - size of the buffer (including trailing 0)
293+
* @param[out] pEventJSONNeededChars - will be filled with the count of the written bytes, or needed buffer size.
294+
* @param[out] pEventJSONBuffer - buffer of Event fields encoded as JSON object., may be NULL
295+
* @return error code or 0 (success)
296+
*/
297+
typedef LibMCDriver_OPCUAResult (*PLibMCDriver_OPCUADriver_OPCUA_PollEventPtr) (LibMCDriver_OPCUA_Driver_OPCUA pDriver_OPCUA, LibMCDriver_OPCUA_uint32 nTimeoutMS, bool * pHasEvent, LibMCDriver_OPCUA_uint32 * pSubscriptionID, LibMCDriver_OPCUA_uint32 * pMonitoredItemID, const LibMCDriver_OPCUA_uint32 nEventJSONBufferSize, LibMCDriver_OPCUA_uint32* pEventJSONNeededChars, char * pEventJSONBuffer);
298+
258299
/*************************************************************************************************************************
259300
Global functions
260301
**************************************************************************************************************************/
@@ -350,6 +391,9 @@ typedef struct {
350391
PLibMCDriver_OPCUADriver_OPCUA_WriteIntegerPtr m_Driver_OPCUA_WriteInteger;
351392
PLibMCDriver_OPCUADriver_OPCUA_WriteDoublePtr m_Driver_OPCUA_WriteDouble;
352393
PLibMCDriver_OPCUADriver_OPCUA_WriteStringPtr m_Driver_OPCUA_WriteString;
394+
PLibMCDriver_OPCUADriver_OPCUA_CreateEventSubscriptionPtr m_Driver_OPCUA_CreateEventSubscription;
395+
PLibMCDriver_OPCUADriver_OPCUA_DeleteEventSubscriptionPtr m_Driver_OPCUA_DeleteEventSubscription;
396+
PLibMCDriver_OPCUADriver_OPCUA_PollEventPtr m_Driver_OPCUA_PollEvent;
353397
PLibMCDriver_OPCUAGetVersionPtr m_GetVersion;
354398
PLibMCDriver_OPCUAGetLastErrorPtr m_GetLastError;
355399
PLibMCDriver_OPCUAReleaseInstancePtr m_ReleaseInstance;

Drivers/OPCUA/Headers/CppDynamic/libmcdriver_opcua_dynamic.hpp

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -571,6 +571,9 @@ class CDriver_OPCUA : public CDriver {
571571
inline void WriteInteger(const LibMCDriver_OPCUA_uint32 nNameSpace, const std::string & sNodeName, const eUAIntegerType eNodeType, const LibMCDriver_OPCUA_int64 nValue);
572572
inline void WriteDouble(const LibMCDriver_OPCUA_uint32 nNameSpace, const std::string & sNodeName, const eUADoubleType eNodeType, const LibMCDriver_OPCUA_double dValue);
573573
inline void WriteString(const LibMCDriver_OPCUA_uint32 nNameSpace, const std::string & sNodeName, const std::string & sValue);
574+
inline void CreateEventSubscription(const LibMCDriver_OPCUA_uint32 nNameSpace, const std::string & sNodeName, const std::string & sSelectFields, const LibMCDriver_OPCUA_double dPublishingInterval, const LibMCDriver_OPCUA_uint32 nQueueSize, const bool bDiscardOldest, LibMCDriver_OPCUA_uint32 & nSubscriptionID, LibMCDriver_OPCUA_uint32 & nMonitoredItemID);
575+
inline void DeleteEventSubscription(const LibMCDriver_OPCUA_uint32 nSubscriptionID, const LibMCDriver_OPCUA_uint32 nMonitoredItemID);
576+
inline void PollEvent(const LibMCDriver_OPCUA_uint32 nTimeoutMS, bool & bHasEvent, LibMCDriver_OPCUA_uint32 & nSubscriptionID, LibMCDriver_OPCUA_uint32 & nMonitoredItemID, std::string & sEventJSON);
574577
};
575578

576579
/**
@@ -714,6 +717,9 @@ class CDriver_OPCUA : public CDriver {
714717
pWrapperTable->m_Driver_OPCUA_WriteInteger = nullptr;
715718
pWrapperTable->m_Driver_OPCUA_WriteDouble = nullptr;
716719
pWrapperTable->m_Driver_OPCUA_WriteString = nullptr;
720+
pWrapperTable->m_Driver_OPCUA_CreateEventSubscription = nullptr;
721+
pWrapperTable->m_Driver_OPCUA_DeleteEventSubscription = nullptr;
722+
pWrapperTable->m_Driver_OPCUA_PollEvent = nullptr;
717723
pWrapperTable->m_GetVersion = nullptr;
718724
pWrapperTable->m_GetLastError = nullptr;
719725
pWrapperTable->m_ReleaseInstance = nullptr;
@@ -942,6 +948,33 @@ class CDriver_OPCUA : public CDriver {
942948
if (pWrapperTable->m_Driver_OPCUA_WriteString == nullptr)
943949
return LIBMCDRIVER_OPCUA_ERROR_COULDNOTFINDLIBRARYEXPORT;
944950

951+
#ifdef _WIN32
952+
pWrapperTable->m_Driver_OPCUA_CreateEventSubscription = (PLibMCDriver_OPCUADriver_OPCUA_CreateEventSubscriptionPtr) GetProcAddress(hLibrary, "libmcdriver_opcua_driver_opcua_createeventsubscription");
953+
#else // _WIN32
954+
pWrapperTable->m_Driver_OPCUA_CreateEventSubscription = (PLibMCDriver_OPCUADriver_OPCUA_CreateEventSubscriptionPtr) dlsym(hLibrary, "libmcdriver_opcua_driver_opcua_createeventsubscription");
955+
dlerror();
956+
#endif // _WIN32
957+
if (pWrapperTable->m_Driver_OPCUA_CreateEventSubscription == nullptr)
958+
return LIBMCDRIVER_OPCUA_ERROR_COULDNOTFINDLIBRARYEXPORT;
959+
960+
#ifdef _WIN32
961+
pWrapperTable->m_Driver_OPCUA_DeleteEventSubscription = (PLibMCDriver_OPCUADriver_OPCUA_DeleteEventSubscriptionPtr) GetProcAddress(hLibrary, "libmcdriver_opcua_driver_opcua_deleteeventsubscription");
962+
#else // _WIN32
963+
pWrapperTable->m_Driver_OPCUA_DeleteEventSubscription = (PLibMCDriver_OPCUADriver_OPCUA_DeleteEventSubscriptionPtr) dlsym(hLibrary, "libmcdriver_opcua_driver_opcua_deleteeventsubscription");
964+
dlerror();
965+
#endif // _WIN32
966+
if (pWrapperTable->m_Driver_OPCUA_DeleteEventSubscription == nullptr)
967+
return LIBMCDRIVER_OPCUA_ERROR_COULDNOTFINDLIBRARYEXPORT;
968+
969+
#ifdef _WIN32
970+
pWrapperTable->m_Driver_OPCUA_PollEvent = (PLibMCDriver_OPCUADriver_OPCUA_PollEventPtr) GetProcAddress(hLibrary, "libmcdriver_opcua_driver_opcua_pollevent");
971+
#else // _WIN32
972+
pWrapperTable->m_Driver_OPCUA_PollEvent = (PLibMCDriver_OPCUADriver_OPCUA_PollEventPtr) dlsym(hLibrary, "libmcdriver_opcua_driver_opcua_pollevent");
973+
dlerror();
974+
#endif // _WIN32
975+
if (pWrapperTable->m_Driver_OPCUA_PollEvent == nullptr)
976+
return LIBMCDRIVER_OPCUA_ERROR_COULDNOTFINDLIBRARYEXPORT;
977+
945978
#ifdef _WIN32
946979
pWrapperTable->m_GetVersion = (PLibMCDriver_OPCUAGetVersionPtr) GetProcAddress(hLibrary, "libmcdriver_opcua_getversion");
947980
#else // _WIN32
@@ -1097,6 +1130,18 @@ class CDriver_OPCUA : public CDriver {
10971130
if ( (eLookupError != 0) || (pWrapperTable->m_Driver_OPCUA_WriteString == nullptr) )
10981131
return LIBMCDRIVER_OPCUA_ERROR_COULDNOTFINDLIBRARYEXPORT;
10991132

1133+
eLookupError = (*pLookup)("libmcdriver_opcua_driver_opcua_createeventsubscription", (void**)&(pWrapperTable->m_Driver_OPCUA_CreateEventSubscription));
1134+
if ( (eLookupError != 0) || (pWrapperTable->m_Driver_OPCUA_CreateEventSubscription == nullptr) )
1135+
return LIBMCDRIVER_OPCUA_ERROR_COULDNOTFINDLIBRARYEXPORT;
1136+
1137+
eLookupError = (*pLookup)("libmcdriver_opcua_driver_opcua_deleteeventsubscription", (void**)&(pWrapperTable->m_Driver_OPCUA_DeleteEventSubscription));
1138+
if ( (eLookupError != 0) || (pWrapperTable->m_Driver_OPCUA_DeleteEventSubscription == nullptr) )
1139+
return LIBMCDRIVER_OPCUA_ERROR_COULDNOTFINDLIBRARYEXPORT;
1140+
1141+
eLookupError = (*pLookup)("libmcdriver_opcua_driver_opcua_pollevent", (void**)&(pWrapperTable->m_Driver_OPCUA_PollEvent));
1142+
if ( (eLookupError != 0) || (pWrapperTable->m_Driver_OPCUA_PollEvent == nullptr) )
1143+
return LIBMCDRIVER_OPCUA_ERROR_COULDNOTFINDLIBRARYEXPORT;
1144+
11001145
eLookupError = (*pLookup)("libmcdriver_opcua_getversion", (void**)&(pWrapperTable->m_GetVersion));
11011146
if ( (eLookupError != 0) || (pWrapperTable->m_GetVersion == nullptr) )
11021147
return LIBMCDRIVER_OPCUA_ERROR_COULDNOTFINDLIBRARYEXPORT;
@@ -1368,6 +1413,50 @@ class CDriver_OPCUA : public CDriver {
13681413
{
13691414
CheckError(m_pWrapper->m_WrapperTable.m_Driver_OPCUA_WriteString(m_pHandle, nNameSpace, sNodeName.c_str(), sValue.c_str()));
13701415
}
1416+
1417+
/**
1418+
* CDriver_OPCUA::CreateEventSubscription - Creates an event subscription for an event notifier node.
1419+
* @param[in] nNameSpace - Namespace ID
1420+
* @param[in] sNodeName - Event notifier node.
1421+
* @param[in] sSelectFields - Comma-separated event field names. Empty uses the default field list.
1422+
* @param[in] dPublishingInterval - Requested publishing interval in milliseconds.
1423+
* @param[in] nQueueSize - Monitored item queue size.
1424+
* @param[in] bDiscardOldest - Discard oldest queued events if full.
1425+
* @param[out] nSubscriptionID - Created subscription id.
1426+
* @param[out] nMonitoredItemID - Created monitored item id.
1427+
*/
1428+
void CDriver_OPCUA::CreateEventSubscription(const LibMCDriver_OPCUA_uint32 nNameSpace, const std::string & sNodeName, const std::string & sSelectFields, const LibMCDriver_OPCUA_double dPublishingInterval, const LibMCDriver_OPCUA_uint32 nQueueSize, const bool bDiscardOldest, LibMCDriver_OPCUA_uint32 & nSubscriptionID, LibMCDriver_OPCUA_uint32 & nMonitoredItemID)
1429+
{
1430+
CheckError(m_pWrapper->m_WrapperTable.m_Driver_OPCUA_CreateEventSubscription(m_pHandle, nNameSpace, sNodeName.c_str(), sSelectFields.c_str(), dPublishingInterval, nQueueSize, bDiscardOldest, &nSubscriptionID, &nMonitoredItemID));
1431+
}
1432+
1433+
/**
1434+
* CDriver_OPCUA::DeleteEventSubscription - Deletes an event subscription and its monitored item.
1435+
* @param[in] nSubscriptionID - Subscription id.
1436+
* @param[in] nMonitoredItemID - Monitored item id.
1437+
*/
1438+
void CDriver_OPCUA::DeleteEventSubscription(const LibMCDriver_OPCUA_uint32 nSubscriptionID, const LibMCDriver_OPCUA_uint32 nMonitoredItemID)
1439+
{
1440+
CheckError(m_pWrapper->m_WrapperTable.m_Driver_OPCUA_DeleteEventSubscription(m_pHandle, nSubscriptionID, nMonitoredItemID));
1441+
}
1442+
1443+
/**
1444+
* CDriver_OPCUA::PollEvent - Processes incoming notifications and returns the next queued event.
1445+
* @param[in] nTimeoutMS - Maximum time to wait for events. 0 for no wait.
1446+
* @param[out] bHasEvent - True if an event was returned.
1447+
* @param[out] nSubscriptionID - Subscription id of the event.
1448+
* @param[out] nMonitoredItemID - Monitored item id of the event.
1449+
* @param[out] sEventJSON - Event fields encoded as JSON object.
1450+
*/
1451+
void CDriver_OPCUA::PollEvent(const LibMCDriver_OPCUA_uint32 nTimeoutMS, bool & bHasEvent, LibMCDriver_OPCUA_uint32 & nSubscriptionID, LibMCDriver_OPCUA_uint32 & nMonitoredItemID, std::string & sEventJSON)
1452+
{
1453+
LibMCDriver_OPCUA_uint32 bytesNeededEventJSON = 0;
1454+
LibMCDriver_OPCUA_uint32 bytesWrittenEventJSON = 0;
1455+
CheckError(m_pWrapper->m_WrapperTable.m_Driver_OPCUA_PollEvent(m_pHandle, nTimeoutMS, &bHasEvent, &nSubscriptionID, &nMonitoredItemID, 0, &bytesNeededEventJSON, nullptr));
1456+
std::vector<char> bufferEventJSON(bytesNeededEventJSON);
1457+
CheckError(m_pWrapper->m_WrapperTable.m_Driver_OPCUA_PollEvent(m_pHandle, nTimeoutMS, &bHasEvent, &nSubscriptionID, &nMonitoredItemID, bytesNeededEventJSON, &bytesWrittenEventJSON, &bufferEventJSON[0]));
1458+
sEventJSON = std::string(&bufferEventJSON[0]);
1459+
}
13711460

13721461
} // namespace LibMCDriver_OPCUA
13731462

Drivers/OPCUA/Implementation/libmcdriver_opcua_driver_opcua.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,4 +323,18 @@ void CDriver_OPCUA::WriteString(const LibMCDriver_OPCUA_uint32 nNameSpace, const
323323
m_pClient->WriteString(nNameSpace, sNodeName, sValue);
324324
}
325325

326+
void CDriver_OPCUA::CreateEventSubscription(const LibMCDriver_OPCUA_uint32 nNameSpace, const std::string& sNodeName, const std::string& sSelectFields, const LibMCDriver_OPCUA_double dPublishingInterval, const LibMCDriver_OPCUA_uint32 nQueueSize, const bool bDiscardOldest, LibMCDriver_OPCUA_uint32& nSubscriptionID, LibMCDriver_OPCUA_uint32& nMonitoredItemID)
327+
{
328+
m_pClient->CreateEventSubscription(nNameSpace, sNodeName, sSelectFields, dPublishingInterval, nQueueSize, bDiscardOldest, nSubscriptionID, nMonitoredItemID);
329+
}
330+
331+
void CDriver_OPCUA::DeleteEventSubscription(const LibMCDriver_OPCUA_uint32 nSubscriptionID, const LibMCDriver_OPCUA_uint32 nMonitoredItemID)
332+
{
333+
m_pClient->DeleteEventSubscription(nSubscriptionID, nMonitoredItemID);
334+
}
335+
336+
void CDriver_OPCUA::PollEvent(const LibMCDriver_OPCUA_uint32 nTimeoutMS, bool& bHasEvent, LibMCDriver_OPCUA_uint32& nSubscriptionID, LibMCDriver_OPCUA_uint32& nMonitoredItemID, std::string& sEventJSON)
337+
{
338+
m_pClient->PollEvent(nTimeoutMS, bHasEvent, nSubscriptionID, nMonitoredItemID, sEventJSON);
339+
}
326340

Drivers/OPCUA/Implementation/libmcdriver_opcua_driver_opcua.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,12 @@ class CDriver_OPCUA : public virtual IDriver_OPCUA, public virtual CDriver {
120120

121121
void WriteString(const LibMCDriver_OPCUA_uint32 nNameSpace, const std::string& sNodeName, const std::string& sValue) override;
122122

123+
void CreateEventSubscription(const LibMCDriver_OPCUA_uint32 nNameSpace, const std::string& sNodeName, const std::string& sSelectFields, const LibMCDriver_OPCUA_double dPublishingInterval, const LibMCDriver_OPCUA_uint32 nQueueSize, const bool bDiscardOldest, LibMCDriver_OPCUA_uint32& nSubscriptionID, LibMCDriver_OPCUA_uint32& nMonitoredItemID) override;
124+
125+
void DeleteEventSubscription(const LibMCDriver_OPCUA_uint32 nSubscriptionID, const LibMCDriver_OPCUA_uint32 nMonitoredItemID) override;
126+
127+
void PollEvent(const LibMCDriver_OPCUA_uint32 nTimeoutMS, bool& bHasEvent, LibMCDriver_OPCUA_uint32& nSubscriptionID, LibMCDriver_OPCUA_uint32& nMonitoredItemID, std::string& sEventJSON) override;
128+
123129
};
124130

125131
} // namespace Impl

0 commit comments

Comments
 (0)