瀏覽代碼

Make feature definitions conditional on build flags

Julius Pfrommer 6 年之前
父節點
當前提交
7d162cb53b

+ 14 - 2
CMakeLists.txt

@@ -58,6 +58,7 @@ option(UA_ENABLE_SUBSCRIPTIONS "Enable subscriptions support." ON)
 option(UA_ENABLE_SUBSCRIPTIONS_EVENTS "Enable the use of events. (EXPERIMENTAL)" OFF)
 option(UA_ENABLE_DISCOVERY "Enable Discovery Service (LDS)" ON)
 option(UA_ENABLE_DISCOVERY_MULTICAST "Enable Discovery Service with multicast support (LDS-ME)" OFF)
+option(UA_ENABLE_QUERY "Enable query support." OFF)
 option(UA_ENABLE_AMALGAMATION "Concatenate the library to a single file open62541.h/.c" OFF)
 option(UA_ENABLE_COVERAGE "Enable gcov coverage" OFF)
 option(BUILD_SHARED_LIBS "Enable building of shared libraries (dll/so)" OFF)
@@ -548,12 +549,23 @@ else()
         list(APPEND UA_FILE_DATATYPES ${PROJECT_SOURCE_DIR}/tools/schema/datatypes_method.txt)
     endif()
 
+    if(UA_ENABLE_SUBSCRIPTIONS)
+        list(APPEND UA_FILE_DATATYPES ${PROJECT_SOURCE_DIR}/tools/schema/datatypes_subscriptions.txt)
+    endif()
+
     if(UA_ENABLE_DISCOVERY)
         list(APPEND UA_FILE_DATATYPES ${PROJECT_SOURCE_DIR}/tools/schema/datatypes_discovery.txt)
     endif()
 
-    if(UA_ENABLE_PUBSUB_INFORMATIONMODEL)
-        set(UA_FILE_NSPUBSUB --xml ${PROJECT_SOURCE_DIR}/tools/schema/Opc.Ua.NodeSet2.PubSubMinimal.xml)
+    if(UA_ENABLE_QUERY)
+        list(APPEND UA_FILE_DATATYPES ${PROJECT_SOURCE_DIR}/tools/schema/datatypes_query.txt)
+    endif()
+
+    if(UA_ENABLE_PUBSUB)
+        list(APPEND UA_FILE_DATATYPES ${PROJECT_SOURCE_DIR}/tools/schema/datatypes_pubsub.txt)
+        if(UA_ENABLE_PUBSUB_INFORMATIONMODEL)
+            set(UA_FILE_NSPUBSUB --xml ${PROJECT_SOURCE_DIR}/tools/schema/Opc.Ua.NodeSet2.PubSubMinimal.xml)
+        endif()
     endif()
 endif()
 

+ 6 - 2
examples/client_async.c

@@ -70,9 +70,10 @@ attrWritten (UA_Client *client, void *userdata, UA_UInt32 requestId,
 }
 
 #ifdef NODES_EXIST
+#ifdef UA_ENABLE_METHODCALLS
 static void
-methodCalled (UA_Client *client, void *userdata, UA_UInt32 requestId,
-              UA_CallResponse *response) {
+methodCalled(UA_Client *client, void *userdata, UA_UInt32 requestId,
+             UA_CallResponse *response) {
 
     printf ("%-50s%i\n", "Called method for request ", requestId);
     size_t outputSize;
@@ -116,6 +117,7 @@ translateCalled (UA_Client *client, void *userdata, UA_UInt32 requestId,
     }
     UA_TranslateBrowsePathsToNodeIdsResponse_deleteMembers (response);
 }
+#endif /* UA_ENABLE_METHODCALLS */
 #endif
 
 int
@@ -188,6 +190,7 @@ main (int argc, char *argv[]) {
 
 //TODO: check the existance of the nodes inside these functions (otherwise seg faults)
 #ifdef NODES_EXIST
+#ifdef UA_ENABLE_METHODCALLS
             UA_String stringValue = UA_String_fromChars ("World");
             UA_Variant_setScalar (&input, &stringValue, &UA_TYPES[UA_TYPES_STRING]);
 
@@ -206,6 +209,7 @@ main (int argc, char *argv[]) {
                                                           pathSize,
                                                           translateCalled, NULL,
                                                           &reqId);
+#endif /* UA_ENABLE_METHODCALLS */
 #endif
             /* How often UA_Client_run_iterate is called depends on the number of request sent */
             UA_Client_run_iterate(client, 0);

+ 4 - 0
include/ua_client.h

@@ -353,6 +353,8 @@ UA_Client_Service_unregisterNodes(UA_Client *client,
 /*
  * Query Service Set
  * ^^^^^^^^^^^^^^^^^ */
+#ifdef UA_ENABLE_QUERY
+
 static UA_INLINE UA_QueryFirstResponse
 UA_Client_Service_queryFirst(UA_Client *client,
                              const UA_QueryFirstRequest request) {
@@ -371,6 +373,8 @@ UA_Client_Service_queryNext(UA_Client *client,
     return response;
 }
 
+#endif
+
 /**
  * .. _client-async-services:
  *

+ 2 - 0
include/ua_client_highlevel.h

@@ -395,10 +395,12 @@ UA_Client_writeUserExecutableAttribute(UA_Client *client, const UA_NodeId nodeId
 /**
  * Method Calling
  * ^^^^^^^^^^^^^^ */
+#ifdef UA_ENABLE_METHODCALLS
 UA_StatusCode UA_EXPORT
 UA_Client_call(UA_Client *client, const UA_NodeId objectId,
                const UA_NodeId methodId, size_t inputSize, const UA_Variant *input,
                size_t *outputSize, UA_Variant **output);
+#endif
 
 /**
  * Node Management

+ 9 - 6
include/ua_client_highlevel_async.h

@@ -8,8 +8,9 @@
 #define UA_CLIENT_HIGHLEVEL_ASYNC_H_
 #include "ua_client.h"
 
-/*Raw Services
- * ^^^^^^^^^^^^^^ */
+/**
+ * Raw Services
+ * ^^^^^^^^^^^^ */
 typedef void (*UA_ClientAsyncReadCallback)(UA_Client *client, void *userdata,
 		UA_UInt32 requestId, UA_ReadResponse *rr);
 static UA_INLINE UA_StatusCode UA_Client_sendAsyncReadRequest(UA_Client *client,
@@ -467,7 +468,7 @@ static UA_INLINE UA_StatusCode UA_Client_writeUserExecutableAttribute_async(
 /**
  * Method Calling
  * ^^^^^^^^^^^^^^ */
-
+#ifdef UA_ENABLE_METHODCALLS
 UA_StatusCode UA_EXPORT __UA_Client_call_async(UA_Client *client,
 		const UA_NodeId objectId, const UA_NodeId methodId, size_t inputSize,
 		const UA_Variant *input, UA_ClientAsyncServiceCallback callback,
@@ -475,17 +476,19 @@ UA_StatusCode UA_EXPORT __UA_Client_call_async(UA_Client *client,
 
 typedef void (*UA_ClientAsyncCallCallback)(UA_Client *client, void *userdata,
 		UA_UInt32 requestId, UA_CallResponse *cr);
+
 static UA_INLINE UA_StatusCode UA_Client_call_async(UA_Client *client,
 		const UA_NodeId objectId, const UA_NodeId methodId, size_t inputSize,
 		const UA_Variant *input, UA_ClientAsyncCallCallback callback,
 		void *userdata, UA_UInt32 *reqId) {
-
 	return __UA_Client_call_async(client, objectId, methodId, inputSize, input,
 			(UA_ClientAsyncServiceCallback) callback, userdata, reqId);
 }
+#endif
 
-/*Node Management
- * ^^^^^^^^^^^^^*/
+/**
+ * Node Management
+ * ^^^^^^^^^^^^^^^ */
 typedef void (*UA_ClientAsyncAddNodesCallback)(UA_Client *client,
 		void *userdata, UA_UInt32 requestId, UA_AddNodesResponse *ar);
 

+ 1 - 0
include/ua_config.h.in

@@ -49,6 +49,7 @@ extern "C" {
 #cmakedefine UA_ENABLE_NONSTANDARD_UDP
 #cmakedefine UA_ENABLE_DISCOVERY
 #cmakedefine UA_ENABLE_DISCOVERY_MULTICAST
+#cmakedefine UA_ENABLE_QUERY
 #cmakedefine UA_ENABLE_DISCOVERY_SEMAPHORE
 #cmakedefine UA_ENABLE_UNIT_TEST_FAILURE_HOOKS
 #cmakedefine UA_ENABLE_VALGRIND_INTERACTIVE

+ 4 - 0
include/ua_plugin_pubsub.h

@@ -14,6 +14,8 @@ extern "C" {
 
 #include "ua_server_pubsub.h"
 
+#ifdef UA_ENABLE_PUBSUB
+
 /**
  * .. _pubsub_connection:
  *
@@ -86,6 +88,8 @@ typedef struct UA_PubSubTransportLayer{
     UA_PubSubChannel * (*createPubSubChannel)(UA_PubSubConnectionConfig *connectionConfig);
 } UA_PubSubTransportLayer;
 
+#endif /* UA_ENABLE_PUBSUB */
+
 #ifdef __cplusplus
 } // extern "C"
 #endif

+ 4 - 0
include/ua_server.h

@@ -795,6 +795,8 @@ UA_Server_setVariableNode_valueCallback(UA_Server *server,
  * also be registered locally. Notifications are then forwarded to a
  * user-defined callback instead of a remote client. */
 
+#ifdef UA_ENABLE_SUBSCRIPTIONS
+
 typedef void (*UA_Server_DataChangeNotificationCallback)
     (UA_Server *server, UA_UInt32 monitoredItemId, void *monitoredItemContext,
      const UA_NodeId *nodeId, void *nodeContext, UA_UInt32 attributeId,
@@ -835,6 +837,8 @@ UA_Server_createDataChangeMonitoredItem(UA_Server *server,
 UA_StatusCode UA_EXPORT
 UA_Server_deleteMonitoredItem(UA_Server *server, UA_UInt32 monitoredItemId);
 
+#endif
+
 /**
  * Method Callbacks
  * ^^^^^^^^^^^^^^^^

+ 4 - 0
include/ua_server_pubsub.h

@@ -14,6 +14,8 @@ extern "C" {
 
 #include "ua_server.h"
 
+#ifdef UA_ENABLE_PUBSUB
+
 /**
  * .. _pubsub:
  *
@@ -344,6 +346,8 @@ UA_Server_getDataSetWriterConfig(UA_Server *server, const UA_NodeId dsw,
 
 UA_StatusCode
 UA_Server_removeDataSetWriter(UA_Server *server, const UA_NodeId dsw);
+
+#endif /* UA_ENABLE_PUBSUB */
     
 #ifdef __cplusplus
 } // extern "C"

+ 3 - 1
src/client/ua_client_highlevel.c

@@ -604,7 +604,8 @@ __UA_Client_addNode_async(UA_Client *client, const UA_NodeClass nodeClass,
 
 }
 
-/*Misc Highlevel Functions*/
+/* Misc Highlevel Functions */
+#ifdef UA_ENABLE_METHODCALLS
 UA_StatusCode __UA_Client_call_async(UA_Client *client,
         const UA_NodeId objectId, const UA_NodeId methodId, size_t inputSize,
         const UA_Variant *input, UA_ClientAsyncServiceCallback callback,
@@ -625,6 +626,7 @@ UA_StatusCode __UA_Client_call_async(UA_Client *client,
             &UA_TYPES[UA_TYPES_CALLREQUEST], callback,
             &UA_TYPES[UA_TYPES_CALLRESPONSE], userdata, reqId);
 }
+#endif
 
 UA_StatusCode __UA_Client_translateBrowsePathsToNodeIds_async(UA_Client *client,
         char *paths[], UA_UInt32 ids[], size_t pathSize,

+ 4 - 2
src/pubsub/ua_pubsub.c

@@ -6,13 +6,15 @@
  */
 
 #include "ua_types_encoding_binary.h"
-#include "ua_server_pubsub.h"
 #include "server/ua_server_internal.h"
+
+#ifdef UA_ENABLE_PUBSUB /* conditional compilation */
+
+#include "ua_server_pubsub.h"
 #include "ua_pubsub.h"
 #include "ua_pubsub_manager.h"
 #include "ua_pubsub_networkmessage.h"
 
-#ifdef UA_ENABLE_PUBSUB /* conditional compilation */
 #ifdef UA_ENABLE_PUBSUB_INFORMATIONMODEL
 #include "ua_pubsub_ns0.h"
 #endif

+ 4 - 0
src/pubsub/ua_pubsub.h

@@ -18,6 +18,8 @@ extern "C" {
 #include "ua_server.h"
 #include "ua_server_pubsub.h"
 
+#ifdef UA_ENABLE_PUBSUB /* conditional compilation */
+
 //forward declarations
 struct UA_WriterGroup;
 typedef struct UA_WriterGroup UA_WriterGroup;
@@ -152,6 +154,8 @@ UA_WriterGroup_addPublishCallback(UA_Server *server, UA_WriterGroup *writerGroup
 void
 UA_WriterGroup_publishCallback(UA_Server *server, UA_WriterGroup *writerGroup);
 
+#endif /* UA_ENABLE_PUBSUB */
+
 #ifdef __cplusplus
 } // extern "C"
 #endif

+ 4 - 0
src/pubsub/ua_pubsub_manager.h

@@ -15,6 +15,8 @@ extern "C" {
 #include "ua_pubsub.h"
 #include "ua_server_pubsub.h"
 
+#ifdef UA_ENABLE_PUBSUB /* conditional compilation */
+
 typedef struct UA_PubSubManager{
     //Connections and PublishedDataSets can exist alone (own lifecycle) -> top level components
     size_t connectionsSize;
@@ -44,6 +46,8 @@ UA_PubSubManager_changeRepeatedCallbackInterval(UA_Server *server, UA_UInt64 cal
 UA_StatusCode
 UA_PubSubManager_removeRepeatedPubSubCallback(UA_Server *server, UA_UInt64 callbackId);
 
+#endif /* UA_ENABLE_PUBSUB */
+
 #ifdef __cplusplus
 } // extern "C"
 #endif

+ 2 - 1
src/pubsub/ua_pubsub_networkmessage.c

@@ -6,7 +6,6 @@
  */
 
 #include "ua_types.h"
-#include "ua_pubsub_networkmessage.h"
 #include "ua_types_encoding_binary.h"
 #include "ua_types_generated.h"
 #include "ua_types_generated_encoding_binary.h"
@@ -14,6 +13,8 @@
 
 #ifdef UA_ENABLE_PUBSUB /* conditional compilation */
 
+#include "ua_pubsub_networkmessage.h"
+
 const UA_Byte NM_VERSION_MASK = 15;
 const UA_Byte NM_PUBLISHER_ID_ENABLED_MASK = 16;
 const UA_Byte NM_GROUP_HEADER_ENABLED_MASK = 32;

+ 11 - 0
src/pubsub/ua_pubsub_ns0.h

@@ -15,26 +15,37 @@ extern "C" {
 #include "server/ua_server_internal.h"
 #include "ua_pubsub.h"
 
+#ifdef UA_ENABLE_PUBSUB_INFORMATIONMODEL /* conditional compilation */
+
 UA_StatusCode
 UA_Server_initPubSubNS0(UA_Server *server);
 
 UA_StatusCode
 addPubSubConnectionRepresentation(UA_Server *server, UA_PubSubConnection *connection);
+
 UA_StatusCode
 removePubSubConnectionRepresentation(UA_Server *server, UA_PubSubConnection *connection);
+
 UA_StatusCode
 addWriterGroupRepresentation(UA_Server *server, UA_WriterGroup *writerGroup);
+
 UA_StatusCode
 removeWriterGroupRepresentation(UA_Server *server, UA_WriterGroup *writerGroup);
+
 UA_StatusCode
 addDataSetWriterRepresentation(UA_Server *server, UA_DataSetWriter *dataSetWriter);
+
 UA_StatusCode
 removeDataSetWriterRepresentation(UA_Server *server, UA_DataSetWriter *dataSetWriter);
+
 UA_StatusCode
 addPublishedDataItemsRepresentation(UA_Server *server, UA_PublishedDataSet *publishedDataSet);
+
 UA_StatusCode
 removePublishedDataSetRepresentation(UA_Server *server, UA_PublishedDataSet *publishedDataSet);
 
+#endif /* UA_ENABLE_PUBSUB_INFORMATIONMODEL */
+
 #ifdef __cplusplus
 } // extern "C"
 #endif

+ 4 - 0
src/server/ua_services.h

@@ -356,6 +356,8 @@ void Service_Call(UA_Server *server, UA_Session *session,
                   UA_CallResponse *response);
 #endif
 
+#ifdef UA_ENABLE_SUBSCRIPTIONS
+
 /**
  * MonitoredItem Service Set
  * -------------------------
@@ -484,6 +486,8 @@ void Service_DeleteSubscriptions(UA_Server *server, UA_Session *session,
  * its Session. */
 /* Not Implemented */
 
+#endif /* UA_ENABLE_SUBSCRIPTIONS */
+
 #ifdef __cplusplus
 } // extern "C"
 #endif

+ 4 - 0
src/server/ua_subscription.h

@@ -19,6 +19,8 @@
 #include "ua_types_generated.h"
 #include "ua_session.h"
 
+#ifdef UA_ENABLE_SUBSCRIPTIONS
+
 /**
  * MonitoredItems create Notifications. Subscriptions collect Notifications from
  * (several) MonitoredItems and publish them to the client.
@@ -202,4 +204,6 @@ UA_StatusCode UA_Subscription_removeRetransmissionMessage(UA_Subscription *sub,
 void UA_Subscription_answerPublishRequestsNoSubscription(UA_Server *server, UA_Session *session);
 UA_Boolean UA_Subscription_reachedPublishReqLimit(UA_Server *server,  UA_Session *session);
 
+#endif /* UA_ENABLE_SUBSCRIPTIONS */
+
 #endif /* UA_SUBSCRIPTION_H_ */

+ 12 - 106
tools/schema/datatypes_minimal.txt

@@ -24,7 +24,6 @@ DataValue
 Variant
 DiagnosticInfo
 NodeClass
-ReferenceNode
 ApplicationDescription
 ApplicationType
 ChannelSecurityToken
@@ -42,6 +41,10 @@ ActivateSessionRequest
 ActivateSessionResponse
 SignatureData
 SignedSoftwareCertificate
+ServiceFault
+UserIdentityToken
+UserNameIdentityToken
+AnonymousIdentityToken
 CreateSessionResponse
 CreateSessionRequest
 EndpointDescription
@@ -49,40 +52,30 @@ UserTokenPolicy
 UserTokenType
 GetEndpointsRequest
 GetEndpointsResponse
-PublishRequest
-PublishResponse
 FindServersRequest
 FindServersResponse
-SubscriptionAcknowledgement
+TimestampsToReturn
 ReadRequest
 ReadResponse
 ReadValueId
-TimestampsToReturn
 WriteRequest
 WriteResponse
 WriteValue
-CreateMonitoredItemsResponse
-MonitoredItemCreateResult
-CreateMonitoredItemsRequest
-MonitoredItemCreateRequest
-MonitoringMode
-MonitoringParameters
 TranslateBrowsePathsToNodeIdsRequest
 TranslateBrowsePathsToNodeIdsResponse
+BrowseResultMask
 BrowsePath
 BrowsePathResult
-RelativePath
 BrowsePathTarget
+RelativePath
 RelativePathElement
 BrowseResponse
 BrowseResult
 ReferenceDescription
-BrowseRequest
 ViewDescription
+BrowseRequest
 BrowseNextRequest
 BrowseNextResponse
-DeleteSubscriptionsRequest
-DeleteSubscriptionsResponse
 BrowseDescription
 BrowseDirection
 AddNodesRequest
@@ -92,11 +85,6 @@ AddNodesResult
 AddReferencesRequest
 AddReferencesResponse
 AddReferencesItem
-BrowseResultMask
-ServerState
-ServerStatusDataType
-BuildInfo
-IdType
 NodeAttributes
 VariableAttributes
 ObjectAttributes
@@ -117,93 +105,11 @@ RegisterNodesRequest
 RegisterNodesResponse
 UnregisterNodesRequest
 UnregisterNodesResponse
-UserIdentityToken
-UserNameIdentityToken
-AnonymousIdentityToken
-ServiceFault
-FilterOperator
-ContentFilterElement
-ContentFilter
-QueryDataDescription
-NodeTypeDescription
-QueryFirstRequest
-QueryDataSet
-ParsingResult
-ContentFilterElementResult
-ContentFilterResult
-EventFilterResult
-QueryFirstResponse
-QueryNextRequest
-QueryNextResponse
-CreateSubscriptionRequest
-CreateSubscriptionResponse
-SetPublishingModeRequest
-SetPublishingModeResponse
-DeleteMonitoredItemsRequest
-DeleteMonitoredItemsResponse
-NotificationMessage
-MonitoredItemNotification
-DataChangeNotification
-ModifySubscriptionRequest
-ModifySubscriptionResponse
-RepublishRequest
-RepublishResponse
-MonitoredItemModifyRequest
-ModifyMonitoredItemsRequest
-MonitoredItemModifyResult
-ModifyMonitoredItemsResponse
-SetMonitoringModeRequest
-SetMonitoringModeResponse
-DataChangeTrigger
-DeadbandType
-DataChangeFilter
-EventFilter
-FilterOperand
-ElementOperand
-LiteralOperand
-AttributeOperand
-SimpleAttributeOperand
-EventNotificationList
-EventFieldList
-StatusChangeNotification
-ServerDiagnosticsSummaryDataType
-SubscriptionDiagnosticsDataType
-SessionDiagnosticsDataType
-ServiceCounterDataType
-SessionSecurityDiagnosticsDataType
+ServerState
+ServerStatusDataType
+BuildInfo
 Duration
 UtcTime
 LocaleId
 RedundancySupport
-RedundantServerDataType
-NetworkGroupDataType
-NumericRange
-EndpointUrlListDataType
-ModelChangeStructureDataType
-SemanticChangeStructureDataType
-TimeZoneDataType
-AggregateConfiguration
-AggregateFilter
-SetTriggeringRequest
-SetTriggeringResponse
-KeyValuePair
-NetworkAddressUrlDataType
-ConfigurationVersionDataType
-DataSetMetaDataType
-FieldMetaData
-DataSetFieldFlags
-StructureDescription
-EnumDescription
-StructureDefinition
-EnumDefinition
-StructureType
-StructureField
-EnumField
-PublishedVariableDataType
-UadpDataSetWriterMessageDataType
-UadpWriterGroupMessageDataType
-DataSetOrderingType
-DataSetFieldContentMask
-UadpDataSetMessageContentMask
-UadpNetworkMessageContentMask
-SimpleTypeDescription
+ServerDiagnosticsSummaryDataType

+ 21 - 0
tools/schema/datatypes_pubsub.txt

@@ -0,0 +1,21 @@
+KeyValuePair
+DataSetMetaDataType
+ConfigurationVersionDataType
+UadpDataSetWriterMessageDataType
+UadpWriterGroupMessageDataType
+UadpDataSetMessageContentMask
+UadpNetworkMessageContentMask
+NetworkAddressUrlDataType
+PublishedVariableDataType
+DataSetOrderingType
+DataSetFieldContentMask
+StructureDefinition
+StructureDescription
+StructureType
+StructureField
+EnumField
+EnumDefinition
+EnumDescription
+SimpleTypeDescription
+DataSetFieldFlags
+FieldMetaData

+ 8 - 0
tools/schema/datatypes_query.txt

@@ -0,0 +1,8 @@
+ParsingResult
+NodeTypeDescription
+QueryDataDescription
+QueryDataSet
+QueryFirstRequest
+QueryFirstResponse
+QueryNextRequest
+QueryNextResponse

+ 52 - 0
tools/schema/datatypes_subscriptions.txt

@@ -0,0 +1,52 @@
+SubscriptionAcknowledgement
+FilterOperator
+ContentFilterElement
+ContentFilter
+ContentFilterElementResult
+ContentFilterResult
+EventFilterResult
+DeadbandType
+AggregateConfiguration
+AggregateFilter
+MonitoringMode
+MonitoringParameters
+CreateMonitoredItemsRequest
+MonitoredItemCreateRequest
+MonitoredItemCreateResult
+CreateMonitoredItemsResponse
+MonitoredItemModifyRequest
+ModifyMonitoredItemsRequest
+MonitoredItemModifyResult
+ModifyMonitoredItemsResponse
+SetMonitoringModeRequest
+SetMonitoringModeResponse
+DataChangeTrigger
+SetTriggeringRequest
+SetTriggeringResponse
+DeleteMonitoredItemsRequest
+DeleteMonitoredItemsResponse
+CreateSubscriptionRequest
+CreateSubscriptionResponse
+ModifySubscriptionRequest
+ModifySubscriptionResponse
+SetPublishingModeRequest
+SetPublishingModeResponse
+DataChangeFilter
+EventFilter
+FilterOperand
+ElementOperand
+LiteralOperand
+AttributeOperand
+SimpleAttributeOperand
+EventNotificationList
+EventFieldList
+DataChangeNotification
+NotificationMessage
+MonitoredItemNotification
+StatusChangeNotification
+PublishRequest
+PublishResponse
+RepublishRequest
+RepublishResponse
+DeleteSubscriptionsRequest
+DeleteSubscriptionsResponse