summaryrefslogtreecommitdiff
path: root/implementation/routing/include/event.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'implementation/routing/include/event.hpp')
-rw-r--r--implementation/routing/include/event.hpp38
1 files changed, 27 insertions, 11 deletions
diff --git a/implementation/routing/include/event.hpp b/implementation/routing/include/event.hpp
index 9033160..2a76ad8 100644
--- a/implementation/routing/include/event.hpp
+++ b/implementation/routing/include/event.hpp
@@ -13,9 +13,11 @@
#include <boost/asio/io_service.hpp>
#include <boost/asio/ip/address.hpp>
-#include <boost/asio/system_timer.hpp>
+#include <boost/asio/steady_timer.hpp>
#include <vsomeip/primitive_types.hpp>
+#include <vsomeip/function_types.hpp>
+#include <vsomeip/payload.hpp>
namespace vsomeip {
@@ -43,14 +45,17 @@ public:
const std::shared_ptr<payload> get_payload() const;
- void set_payload(std::shared_ptr<payload> _payload, const client_t _client);
+ void set_payload(const std::shared_ptr<payload> &_payload,
+ const client_t _client, bool _force = false);
- void set_payload(std::shared_ptr<payload> _payload,
- const std::shared_ptr<endpoint_definition> _target);
+ void set_payload(const std::shared_ptr<payload> &_payload,
+ const std::shared_ptr<endpoint_definition> _target,
+ bool _force = false);
- void set_payload_dont_notify(std::shared_ptr<payload> _payload);
+ void set_payload_dont_notify(const std::shared_ptr<payload> &_payload);
- void set_payload(std::shared_ptr<payload> _payload);
+ void set_payload(const std::shared_ptr<payload> &_payload,
+ bool _force = false);
void unset_payload(bool _force = false);
bool is_field() const;
@@ -63,18 +68,20 @@ public:
// SIP_RPC_357
void set_update_cycle(std::chrono::milliseconds &_cycle);
+ void set_change_resets_cycle(bool _change_resets_cycle);
// SIP_RPC_358
void set_update_on_change(bool _is_on);
- // SIP_RPC_359 (epsilon change) is not supported!
+ // SIP_RPC_359 (epsilon change)
+ void set_epsilon_change_function(const epsilon_change_func_t &_epsilon_change_func);
const std::set<eventgroup_t> & get_eventgroups() const;
void add_eventgroup(eventgroup_t _eventgroup);
void set_eventgroups(const std::set<eventgroup_t> &_eventgroups);
void notify_one(const std::shared_ptr<endpoint_definition> &_target);
- void notify_one(client_t _client, bool _is_initial = false);
+ void notify_one(client_t _client);
void add_ref(client_t _client, bool _is_provided);
void remove_ref(client_t _client, bool _is_provided);
@@ -91,17 +98,24 @@ private:
void notify();
void notify(client_t _client, const std::shared_ptr<endpoint_definition> &_target);
-private:
- bool set_payload_helper(std::shared_ptr<payload> _payload);
+ void start_cycle();
+ void stop_cycle();
+
+ bool compare(const std::shared_ptr<payload> &_lhs, const std::shared_ptr<payload> &_rhs) const;
+
+ bool set_payload_helper(const std::shared_ptr<payload> &_payload, bool _force);
+ void reset_payload(const std::shared_ptr<payload> &_payload);
+private:
routing_manager *routing_;
std::mutex mutex_;
std::shared_ptr<message> message_;
bool is_field_;
- boost::asio::system_timer cycle_timer_;
+ boost::asio::steady_timer cycle_timer_;
std::chrono::milliseconds cycle_;
+ bool change_resets_cycle_;
bool is_updating_on_change_;
@@ -115,6 +129,8 @@ private:
bool is_shadow_;
bool is_cache_placeholder_;
+
+ epsilon_change_func_t epsilon_change_func_;
};
} // namespace vsomeip