1 // Copyright (C) 2014-2017 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
2 // This Source Code Form is subject to the terms of the Mozilla Public
3 // License, v. 2.0. If a copy of the MPL was not distributed with this
4 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
5 
6 #ifndef VSOMEIP_V3_E2E_PROVIDER_HPP
7 #define VSOMEIP_V3_E2E_PROVIDER_HPP
8 
9 #include <string>
10 #include <memory>
11 
12 #include "../../buffer/buffer.hpp"
13 #include "../../e2exf/config.hpp"
14 #include "../../../../configuration/include/e2e.hpp"
15 #include "profile_interface/profile_interface.hpp"
16 
17 namespace vsomeip_v3 {
18 namespace e2e {
19 
20 class e2e_provider {
21 public:
22     virtual bool add_configuration(std::shared_ptr<cfg::e2e> config) = 0;
23 
24     virtual bool is_protected(e2exf::data_identifier_t id) const = 0;
25     virtual bool is_checked(e2exf::data_identifier_t id) const = 0;
26 
27     virtual std::size_t get_protection_base(e2exf::data_identifier_t _id) const = 0;
28 
29     virtual void protect(e2exf::data_identifier_t id,
30             e2e_buffer &_buffer, instance_t _instance) = 0;
31     virtual void check(e2exf::data_identifier_t id,
32             const e2e_buffer &_buffer, instance_t _instance,
33             e2e::profile_interface::check_status_t &_generic_check_status) = 0;
34 };
35 
36 } // namespace e2e
37 } // namespace vsomeip_v3
38 
39 #endif  // VSOMEIP_V3_E2E_PROVIDER_HPP
40 
41