Browse Source

Separated some of the larger code constructs into reusable functions.

ichrispa 9 years ago
parent
commit
2dd62d96bc
1 changed files with 7 additions and 8 deletions
  1. 7 8
      src/server/ua_subscription_manager.h

+ 7 - 8
src/server/ua_subscription_manager.h

@@ -1,7 +1,3 @@
-#ifndef ENABLESUBSCRIPTIONS
-#define ENABLESUBSCRIPTIONS
-#endif
-
 #ifdef  ENABLESUBSCRIPTIONS
 #ifndef UA_SUBSCRIPTION_MANAGER_H_
 #define UA_SUBSCRIPTION_MANAGER_H_
@@ -47,13 +43,14 @@ typedef struct UA_MonitoredItem_s {
     MONITOREITEM_TYPE		    MonitoredItemType;
     UA_UInt32                       TimestampsToReturn;
     UA_UInt32                       MonitoringMode;
-    const void                      *monitoredNode; // Pointer to a node of any type
+    const UA_Node                   *monitoredNode; // Pointer to a node of any type
     UA_UInt32                       AttributeID;
     UA_UInt32                       ClientHandle;
     UA_UInt32                       SamplingInterval;
-    UA_DateTime                     LastSampled;
     UA_UInt32_BoundedValue          QueueSize;
     UA_Boolean                      DiscardOldest;
+    UA_DateTime                     LastSampled;
+    UA_ByteString                   *LastSeenValue;
     // FIXME: indexRange is ignored; array values default to element 0
     // FIXME: dataEncoding is hardcoded to UA binary
     LIST_ENTRY(UA_MonitoredItem_s)  listEntry;
@@ -105,12 +102,14 @@ void            	Subscription_updateNotifications(UA_Subscription *subscription)
 UA_UInt32       	Subscription_queuedNotifications(UA_Subscription *subscription);
 UA_UInt32 		*Subscription_getAvailableSequenceNumbers(UA_Subscription *sub);
 void 			Subscription_copyTopNotificationMessage(UA_NotificationMessage *dst, UA_Subscription *sub);
-void   			Subscription_deleteUnpublishedNotification(UA_UInt32 seqNo, UA_Subscription *sub);
+UA_UInt32		Subscription_deleteUnpublishedNotification(UA_UInt32 seqNo, UA_Subscription *sub);
+void                    Subscription_generateKeepAlive(UA_Subscription *subscription);
 
 UA_MonitoredItem *UA_MonitoredItem_new(void);
 void             MonitoredItem_delete(UA_MonitoredItem *monitoredItem);
 void             MonitoredItem_QueuePushDataValue(UA_MonitoredItem *monitoredItem);
 void             MonitoredItem_ClearQueue(UA_MonitoredItem *monitoredItem);
-int MonitoredItem_QueueToDataChangeNotifications(UA_MonitoredItemNotification *dst, UA_MonitoredItem *monitoredItem);
+UA_Boolean       MonitoredItem_CopyMonitoredValueToVariant(UA_UInt32 AttributeID, const UA_Node *src, UA_Variant *dst);
+int              MonitoredItem_QueueToDataChangeNotifications(UA_MonitoredItemNotification *dst, UA_MonitoredItem *monitoredItem);
 #endif  // ifndef... define UA_SUBSCRIPTION_MANAGER_H_
 #endif  // ifdef EnableSubscriptions ...