Browse Source

Simplify UA_MonitoredItem_new

Julius Pfrommer 7 years ago
parent
commit
fae757e2b8

+ 3 - 2
src/server/ua_services_subscription.c

@@ -278,7 +278,8 @@ Operation_CreateMonitoredItem(UA_Server *server, UA_Session *session, struct cre
     }
 
     /* Create the monitoreditem */
-    UA_MonitoredItem *newMon = UA_MonitoredItem_new(UA_MONITOREDITEMTYPE_CHANGENOTIFY);
+    UA_MonitoredItem *newMon = UA_MonitoredItem_new(cmc->sub);
+    newMon->monitoredItemType = UA_MONITOREDITEMTYPE_CHANGENOTIFY;
     if(!newMon) {
         result->statusCode = UA_STATUSCODE_BADOUTOFMEMORY;
         UA_DataValue_deleteMembers(&v);
@@ -292,7 +293,7 @@ Operation_CreateMonitoredItem(UA_Server *server, UA_Session *session, struct cre
         UA_DataValue_deleteMembers(&v);
         return;
     }
-    newMon->subscription = cmc->sub;
+
     newMon->attributeId = request->itemToMonitor.attributeId;
     UA_String_copy(&request->itemToMonitor.indexRange, &newMon->indexRange);
     newMon->monitoredItemId = ++cmc->sub->lastMonitoredItemId;

+ 1 - 1
src/server/ua_subscription.h

@@ -94,7 +94,7 @@ struct UA_MonitoredItem {
     UA_UInt32 queueSize;
 };
 
-UA_MonitoredItem * UA_MonitoredItem_new(UA_MonitoredItemType);
+UA_MonitoredItem * UA_MonitoredItem_new(UA_Subscription *sub);
 void MonitoredItem_delete(UA_Server *server, UA_MonitoredItem *monitoredItem);
 void UA_MonitoredItem_SampleCallback(UA_Server *server, UA_MonitoredItem *monitoredItem);
 UA_StatusCode MonitoredItem_registerSampleCallback(UA_Server *server, UA_MonitoredItem *mon);

+ 6 - 11
src/server/ua_subscription_datachange.c

@@ -15,19 +15,14 @@
 
 #define UA_VALUENCODING_MAXSTACK 512
 
-UA_MonitoredItem *
-UA_MonitoredItem_new(UA_MonitoredItemType monType) {
-    /* Allocate the memory */
-    UA_MonitoredItem *newItem =
-            (UA_MonitoredItem *) UA_calloc(1, sizeof(UA_MonitoredItem));
-    if(!newItem)
+UA_MonitoredItem * UA_MonitoredItem_new(UA_Subscription *sub) {
+    UA_MonitoredItem *mon = (UA_MonitoredItem *)UA_calloc(1, sizeof(UA_MonitoredItem));
+    if(!mon)
         return NULL;
 
-    /* Remaining members are covered by calloc zeroing out the memory */
-    newItem->monitoredItemType = monType; /* currently hardcoded */
-    newItem->timestampsToReturn = UA_TIMESTAMPSTORETURN_SOURCE;
-    TAILQ_INIT(&newItem->queue);
-    return newItem;
+    mon->subscription = sub;
+    TAILQ_INIT(&mon->queue);
+    return mon;
 }
 
 void