Browse Source

PubSub: Build flag for custom publisher callback handling

Julius Pfrommer 5 years ago
parent
commit
9ca1ca412f
3 changed files with 17 additions and 0 deletions
  1. 9 0
      CMakeLists.txt
  2. 1 0
      include/open62541/config.h.in
  3. 7 0
      src/pubsub/ua_pubsub_manager.c

+ 9 - 0
CMakeLists.txt

@@ -227,6 +227,15 @@ if(UA_ENABLE_PUBSUB_INFORMATIONMODEL)
     endif()
 endif()
 
+option(UA_ENABLE_PUBSUB_CUSTOM_PUBLISH_HANDLING
+       "Use a custom implementation for the publish callback handling" OFF)
+mark_as_advanced(UA_ENABLE_PUBSUB_CUSTOM_PUBLISH_HANDLING)
+if(UA_ENABLE_PUBSUB_CUSTOM_PUBLISH_INTERRUPT)
+    if(NOT UA_ENABLE_PUBSUB)
+        message(FATAL_ERROR "Custom publish callback handling cannot be used with PubSub function disabled")
+    endif()
+endif()
+
 option(UA_ENABLE_JSON_ENCODING "Enable Json encoding (EXPERIMENTAL)" OFF)
 mark_as_advanced(UA_ENABLE_JSON_ENCODING)
 

+ 1 - 0
include/open62541/config.h.in

@@ -58,6 +58,7 @@
 #cmakedefine UA_ENABLE_VALGRIND_INTERACTIVE
 #define UA_VALGRIND_INTERACTIVE_INTERVAL ${UA_VALGRIND_INTERACTIVE_INTERVAL}
 #cmakedefine UA_GENERATED_NAMESPACE_ZERO
+#cmakedefine UA_ENABLE_PUBSUB_CUSTOM_PUBLISH_HANDLING
 
 #cmakedefine UA_PACK_DEBIAN
 

+ 7 - 0
src/pubsub/ua_pubsub_manager.c

@@ -309,6 +309,11 @@ UA_PubSubManager_delete(UA_Server *server, UA_PubSubManager *pubSubManager) {
 /*      PubSub Jobs abstraction    */
 /***********************************/
 
+#ifndef UA_ENABLE_PUBSUB_CUSTOM_PUBLISH_HANDLING
+
+/* If UA_ENABLE_PUBSUB_CUSTOM_PUBLISH_INTERRUPT is enabled, a custom callback
+ * management must be linked to the application */
+
 UA_StatusCode
 UA_PubSubManager_addRepeatedCallback(UA_Server *server, UA_ServerCallback callback,
                                      void *data, UA_Double interval_ms, UA_UInt64 *callbackId) {
@@ -327,4 +332,6 @@ UA_PubSubManager_removeRepeatedPubSubCallback(UA_Server *server, UA_UInt64 callb
     UA_Timer_removeCallback(&server->timer, callbackId);
 }
 
+#endif /* UA_ENABLE_PUBSUB_CUSTOM_PUBLISH_HANDLING */
+
 #endif /* UA_ENABLE_PUBSUB */