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