Ver código fonte

fixes #299, adding a non-public ua_client_internal.h to hide internals of client's implementation

Stasik0 9 anos atrás
pai
commit
5f2f949807
4 arquivos alterados com 58 adições e 48 exclusões
  1. 2 1
      CMakeLists.txt
  2. 8 47
      include/ua_client.h
  3. 1 0
      src/client/ua_client.c
  4. 47 0
      src/client/ua_client_internal.h

+ 2 - 1
CMakeLists.txt

@@ -86,7 +86,8 @@ set(internal_headers ${PROJECT_SOURCE_DIR}/src/ua_util.h
                      ${PROJECT_SOURCE_DIR}/src/server/ua_session_manager.h
                      ${PROJECT_SOURCE_DIR}/src/server/ua_securechannel_manager.h
                      ${PROJECT_SOURCE_DIR}/src/server/ua_server_internal.h
-                     ${PROJECT_SOURCE_DIR}/src/server/ua_services.h)
+                     ${PROJECT_SOURCE_DIR}/src/server/ua_services.h
+                     ${PROJECT_SOURCE_DIR}/src/client/ua_client_internal.h)
 set(lib_sources ${PROJECT_SOURCE_DIR}/src/ua_types.c
                 ${PROJECT_SOURCE_DIR}/src/ua_types_encoding_binary.c
                 ${PROJECT_BINARY_DIR}/src_generated/ua_types_generated.c

+ 8 - 47
include/ua_client.h

@@ -10,7 +10,6 @@ extern "C" {
 #include "ua_connection.h"
 #include "ua_log.h"
 #include "ua_types_generated.h"
-#include "queue.h"
 
 struct UA_Client;
 typedef struct UA_Client UA_Client;
@@ -86,60 +85,22 @@ UA_AddNodesResponse UA_EXPORT *UA_Client_createObjectTypeNode(UA_Client *client,
                                                             UA_LocalizedText description, UA_ExpandedNodeId parentNodeId, UA_NodeId referenceTypeId,
                                                             UA_UInt32 userWriteMask, UA_UInt32 writeMask, UA_ExpandedNodeId typeDefinition);
 
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
 
 #ifdef ENABLE_SUBSCRIPTIONS
-typedef struct UA_Client_NotificationsAckNumber_s {
-    UA_SubscriptionAcknowledgement subAck;
-    LIST_ENTRY(UA_Client_NotificationsAckNumber_s) listEntry;
-} UA_Client_NotificationsAckNumber;
-
-typedef struct UA_Client_MonitoredItem_s {
-    UA_UInt32          MonitoredItemId;
-    UA_UInt32          MonitoringMode;
-    UA_NodeId          monitoredNodeId; 
-    UA_UInt32          AttributeID;
-    UA_UInt32          ClientHandle;
-    UA_UInt32          SamplingInterval;
-    UA_UInt32          QueueSize;
-    UA_Boolean         DiscardOldest;
-    void               (*handler)(UA_UInt32 handle, UA_DataValue *value);
-    LIST_ENTRY(UA_Client_MonitoredItem_s)  listEntry;
-} UA_Client_MonitoredItem;
-
-typedef struct UA_Client_Subscription_s {
-    UA_UInt32    LifeTime;
-    UA_Int32     KeepAliveCount;
-    UA_DateTime  PublishingInterval;
-    UA_UInt32    SubscriptionID;
-    UA_Int32     NotificationsPerPublish;
-    UA_UInt32    Priority;
-    LIST_ENTRY(UA_Client_Subscription_s) listEntry; 
-    LIST_HEAD(UA_ListOfClientMonitoredItems, UA_Client_MonitoredItem_s) MonitoredItems;
-} UA_Client_Subscription;
-
-UA_CreateSubscriptionResponse   UA_EXPORT UA_Client_createSubscription(UA_Client *client, UA_CreateSubscriptionRequest *request);
-UA_ModifySubscriptionResponse   UA_EXPORT UA_Client_modifySubscription(UA_Client *client, UA_ModifySubscriptionRequest *request);
-UA_DeleteSubscriptionsResponse  UA_EXPORT UA_Client_deleteSubscriptions(UA_Client *client, UA_DeleteSubscriptionsRequest *request);
-UA_CreateMonitoredItemsResponse UA_EXPORT UA_Client_createMonitoredItems(UA_Client *client, UA_CreateMonitoredItemsRequest *request);
-UA_DeleteMonitoredItemsResponse UA_EXPORT UA_Client_deleteMonitoredItems(UA_Client *client, UA_DeleteMonitoredItemsRequest *request);
-UA_PublishResponse              UA_EXPORT UA_Client_publish(UA_Client *client, UA_PublishRequest *request);
-
 UA_Int32      UA_EXPORT UA_Client_newSubscription(UA_Client *client, UA_Int32 publishInterval);
 UA_StatusCode UA_EXPORT UA_Client_removeSubscription(UA_Client *client, UA_UInt32 subscriptionId);
 //void UA_EXPORT UA_Client_modifySubscription(UA_Client *client);
+void UA_EXPORT UA_Client_doPublish(UA_Client *client);
 
-UA_UInt32     UA_EXPORT UA_Client_monitorItemChanges(UA_Client *client, UA_UInt32 subscriptionId, 
-                                                     UA_NodeId nodeId, UA_UInt32 attributeID, 
+UA_UInt32     UA_EXPORT UA_Client_monitorItemChanges(UA_Client *client, UA_UInt32 subscriptionId,
+                                                     UA_NodeId nodeId, UA_UInt32 attributeID,
                                                      void *handlingFunction);
-UA_StatusCode UA_EXPORT UA_Client_unMonitorItemChanges(UA_Client *client, UA_UInt32 subscriptionId, 
+UA_StatusCode UA_EXPORT UA_Client_unMonitorItemChanges(UA_Client *client, UA_UInt32 subscriptionId,
                                                        UA_UInt32 monitoredItemId );
+#endif
 
-void UA_EXPORT UA_Client_doPublish(UA_Client *client);
-UA_Boolean UA_Client_processPublishRx(UA_Client *client, UA_PublishResponse response);
-
+#ifdef __cplusplus
+} // extern "C"
 #endif
+
 #endif /* UA_CLIENT_H_ */

+ 1 - 0
src/client/ua_client.c

@@ -4,6 +4,7 @@
 #include "ua_securechannel.h"
 #include "ua_types_encoding_binary.h"
 #include "ua_transport_generated.h"
+#include "ua_client_internal.h"
 
 struct UA_Client {
     /* Connection */

+ 47 - 0
src/client/ua_client_internal.h

@@ -0,0 +1,47 @@
+#ifndef UA_CLIENT_INTERNAL_H_
+#define UA_CLIENT_INTERNAL_H_
+
+#include "queue.h"
+
+#ifdef ENABLE_SUBSCRIPTIONS
+typedef struct UA_Client_NotificationsAckNumber_s {
+    UA_SubscriptionAcknowledgement subAck;
+    LIST_ENTRY(UA_Client_NotificationsAckNumber_s) listEntry;
+} UA_Client_NotificationsAckNumber;
+
+typedef struct UA_Client_MonitoredItem_s {
+    UA_UInt32          MonitoredItemId;
+    UA_UInt32          MonitoringMode;
+    UA_NodeId          monitoredNodeId;
+    UA_UInt32          AttributeID;
+    UA_UInt32          ClientHandle;
+    UA_UInt32          SamplingInterval;
+    UA_UInt32          QueueSize;
+    UA_Boolean         DiscardOldest;
+    void               (*handler)(UA_UInt32 handle, UA_DataValue *value);
+    LIST_ENTRY(UA_Client_MonitoredItem_s)  listEntry;
+} UA_Client_MonitoredItem;
+
+typedef struct UA_Client_Subscription_s {
+    UA_UInt32    LifeTime;
+    UA_Int32     KeepAliveCount;
+    UA_DateTime  PublishingInterval;
+    UA_UInt32    SubscriptionID;
+    UA_Int32     NotificationsPerPublish;
+    UA_UInt32    Priority;
+    LIST_ENTRY(UA_Client_Subscription_s) listEntry;
+    LIST_HEAD(UA_ListOfClientMonitoredItems, UA_Client_MonitoredItem_s) MonitoredItems;
+} UA_Client_Subscription;
+
+UA_CreateSubscriptionResponse   UA_Client_createSubscription(UA_Client *client, UA_CreateSubscriptionRequest *request);
+UA_ModifySubscriptionResponse   UA_Client_modifySubscription(UA_Client *client, UA_ModifySubscriptionRequest *request);
+UA_DeleteSubscriptionsResponse  UA_Client_deleteSubscriptions(UA_Client *client, UA_DeleteSubscriptionsRequest *request);
+UA_CreateMonitoredItemsResponse UA_Client_createMonitoredItems(UA_Client *client, UA_CreateMonitoredItemsRequest *request);
+UA_DeleteMonitoredItemsResponse UA_Client_deleteMonitoredItems(UA_Client *client, UA_DeleteMonitoredItemsRequest *request);
+UA_PublishResponse              UA_Client_publish(UA_Client *client, UA_PublishRequest *request);
+
+
+UA_Boolean UA_Client_processPublishRx(UA_Client *client, UA_PublishResponse response);
+#endif
+
+#endif /* UA_CLIENT_INTERNAL_H_ */