diff options
Diffstat (limited to 'interface/vsomeip/application.hpp')
-rw-r--r-- | interface/vsomeip/application.hpp | 52 |
1 files changed, 35 insertions, 17 deletions
diff --git a/interface/vsomeip/application.hpp b/interface/vsomeip/application.hpp index 98ee93d..f08a91d 100644 --- a/interface/vsomeip/application.hpp +++ b/interface/vsomeip/application.hpp @@ -7,6 +7,7 @@ #define VSOMEIP_APPLICATION_HPP #include <memory> +#include <set> #include <vsomeip/primitive_types.hpp> #include <vsomeip/enumeration_types.hpp> @@ -15,18 +16,20 @@ namespace vsomeip { +class configuration; class event; class payload; class application { public: - virtual ~application() { - } + virtual ~application() {} // get name virtual const std::string & get_name() const = 0; virtual client_t get_client() const = 0; + virtual void set_configuration(const std::shared_ptr<configuration> _configuration) = 0; + // Lifecycle virtual bool init() = 0; virtual void start() = 0; @@ -35,56 +38,71 @@ public: // Provide services virtual void offer_service(service_t _service, instance_t _instance, major_version_t _major = DEFAULT_MAJOR, minor_version_t _minor = - DEFAULT_MINOR, ttl_t _ttl = DEFAULT_TTL) = 0; + DEFAULT_MINOR) = 0; virtual void stop_offer_service(service_t _service, instance_t _instance) = 0; + virtual void offer_event(service_t _service, + instance_t _instance, event_t _event, + std::set<eventgroup_t> _eventgroups, + bool _is_field) = 0; + virtual void stop_offer_event(service_t _service, + instance_t _instance, event_t _event) = 0; + // Consume services virtual void request_service(service_t _service, instance_t _instance, - bool _has_selective = false, major_version_t _major = ANY_MAJOR, - minor_version_t _minor = ANY_MINOR, ttl_t _ttl = ANY_TTL) = 0; - + major_version_t _major = ANY_MAJOR, + minor_version_t _minor = ANY_MINOR, + bool _use_exclusive_proxy = false) = 0; virtual void release_service(service_t _service, instance_t _instance) = 0; + virtual void request_event(service_t _service, instance_t _instance, + event_t _event, std::set<eventgroup_t> _eventgroups, + bool _is_field) = 0; + virtual void release_event(service_t _service, instance_t _instance, + event_t _event) = 0; + virtual void subscribe(service_t _service, instance_t _instance, - eventgroup_t _eventgroup, major_version_t _major = ANY_MAJOR, - ttl_t _ttl = ANY_TTL) = 0; + eventgroup_t _eventgroup, major_version_t _major = DEFAULT_MAJOR) = 0; virtual void unsubscribe(service_t _service, instance_t _instance, eventgroup_t _eventgroup) = 0; - virtual bool is_available(service_t _service, instance_t _instance) = 0; + virtual bool is_available(service_t _service, instance_t _instance) const = 0; // Send a message virtual void send(std::shared_ptr<message> _message, bool _flush = true) = 0; - // Notify subscribers in case an event payload changes + // Set a field or fire an event virtual void notify(service_t _service, instance_t _instance, event_t _event, std::shared_ptr<payload> _payload) const = 0; virtual void notify_one(service_t _service, instance_t _instance, - event_t _event, std::shared_ptr<payload> _payload, client_t _client) const = 0; + event_t _event, std::shared_ptr<payload> _payload, + client_t _client) const = 0; - // Receive events (Non-SOME/IP) - virtual void register_event_handler(event_handler_t _handler) = 0; - virtual void unregister_event_handler() = 0; + // [Un]Register handler for state change events + virtual void register_state_handler(state_handler_t _handler) = 0; + virtual void unregister_state_handler() = 0; - // Receive messages + // [Un]Register message handler for a method/an event/field virtual void register_message_handler(service_t _service, instance_t _instance, method_t _method, message_handler_t _handler) = 0; virtual void unregister_message_handler(service_t _service, instance_t _instance, method_t _method) = 0; - // Receive availability + // [Un]Register handler for availability reporting virtual void register_availability_handler(service_t _service, instance_t _instance, availability_handler_t _handler) = 0; virtual void unregister_availability_handler(service_t _service, instance_t _instance) = 0; + // [Un]Register handler for subscriptions virtual void register_subscription_handler(service_t _service, - instance_t _instance, eventgroup_t _eventgroup, subscription_handler_t _handler) = 0; + instance_t _instance, eventgroup_t _eventgroup, + subscription_handler_t _handler) = 0; virtual void unregister_subscription_handler(service_t _service, instance_t _instance, eventgroup_t _eventgroup) = 0; }; |