00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 #ifndef __OPC_UA_Client_SUBSCRIPTIONS_H 00012 #define __OPC_UA_Client_SUBSCRIPTIONS_H 00013 00014 #include <opc/common/interface.h> 00015 #include <opc/common/class_pointers.h> 00016 #include <opc/ua/protocol/monitored_items.h> 00017 00018 #include <functional> 00019 00020 namespace OpcUa 00021 { 00022 00023 class SubscriptionServices : private Common::Interface 00024 { 00025 public: 00026 DEFINE_CLASS_POINTERS(SubscriptionServices); 00027 00028 public: 00029 virtual SubscriptionData CreateSubscription(const CreateSubscriptionRequest&, std::function<void (PublishResult)> callbackPublish) = 0; 00030 virtual std::vector<StatusCode> DeleteSubscriptions(const std::vector<uint32_t>& subscriptions) = 0; 00031 virtual void Publish(const PublishRequest& request) = 0; 00032 virtual RepublishResponse Republish(const RepublishParameters& params) = 0; 00033 00034 //FIXME: Spec says MonitoredItems methods should be in their own service 00035 virtual std::vector<MonitoredItemCreateResult> CreateMonitoredItems(const MonitoredItemsParameters& parameters) = 0; 00036 virtual std::vector<StatusCode> DeleteMonitoredItems(const DeleteMonitoredItemsParameters& params) = 0; 00037 }; 00038 00039 } 00040 00041 #endif // __OPC_UA_Client_SUBSCRIPTIONS_H