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_ENDPOINT_HPP_
7 #define VSOMEIP_V3_ENDPOINT_HPP_
8 
9 #include <boost/asio/ip/address.hpp>
10 
11 #include <vsomeip/primitive_types.hpp>
12 #include <vsomeip/constants.hpp>
13 
14 #include <vector>
15 
16 namespace vsomeip_v3 {
17 
18 class endpoint_definition;
19 
20 class endpoint {
21 public:
22     typedef std::function<void()> error_handler_t;
23     typedef std::function<void(const std::shared_ptr<endpoint>&, service_t)> prepare_stop_handler_t;
24 
~endpoint()25     virtual ~endpoint()
26 #ifndef ANDROID
27     {}
28 #else
29     ;
30 #endif
31 
32     virtual void start() = 0;
33     virtual void prepare_stop(prepare_stop_handler_t _handler,
34                               service_t _service = ANY_SERVICE) = 0;
35     virtual void stop() = 0;
36 
37     virtual bool is_established() const = 0;
38     virtual bool is_established_or_connected() const = 0;
39 
40     virtual bool send(const byte_t *_data, uint32_t _size) = 0;
41     virtual bool send(const std::vector<byte_t>& _cmd_header, const byte_t *_data,
42               uint32_t _size) = 0;
43     virtual bool send_to(const std::shared_ptr<endpoint_definition> _target,
44             const byte_t *_data, uint32_t _size) = 0;
45     virtual bool send_error(const std::shared_ptr<endpoint_definition> _target,
46             const byte_t *_data, uint32_t _size) = 0;
47     virtual void enable_magic_cookies() = 0;
48     virtual void receive() = 0;
49 
50     virtual void add_default_target(service_t _service,
51             const std::string &_address, uint16_t _port) = 0;
52     virtual void remove_default_target(service_t _service) = 0;
53 
54     virtual std::uint16_t get_local_port() const = 0;
55     virtual void set_local_port(uint16_t _port) = 0;
56     virtual bool is_reliable() const = 0;
57     virtual bool is_local() const = 0;
58 
59     virtual void increment_use_count() = 0;
60     virtual void decrement_use_count() = 0;
61     virtual uint32_t get_use_count() = 0;
62 
63     virtual void restart(bool _force = false) = 0;
64 
65     virtual void register_error_handler(error_handler_t _error) = 0;
66 
67     virtual void print_status() = 0;
68     virtual size_t get_queue_size() const = 0;
69 
70     virtual void set_established(bool _established) = 0;
71     virtual void set_connected(bool _connected) = 0;
72 };
73 
74 } // namespace vsomeip_v3
75 
76 #endif // VSOMEIP_V3_ENDPOINT_HPP_
77