summaryrefslogtreecommitdiff
path: root/implementation/routing/include/routing_manager_stub_host.hpp
blob: c55dd86bdbf8c9479f8d16833467c9cc824085cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
// Copyright (C) 2014-2021 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.

#ifndef VSOMEIP_V3_ROUTING_MANAGER_STUB_HOST_
#define VSOMEIP_V3_ROUTING_MANAGER_STUB_HOST_

#if VSOMEIP_BOOST_VERSION < 106600
#    include <boost/asio/io_service.hpp>
#    define io_context io_service
#else
#    include <boost/asio/io_context.hpp>
#endif

#include <vsomeip/handler.hpp>
#include <vsomeip/vsomeip_sec.h>

#include "types.hpp"

namespace vsomeip_v3 {

class endpoint_manager_impl;

class routing_manager_stub_host {
public:
    virtual ~routing_manager_stub_host() {
    }

    virtual bool offer_service(client_t _client, service_t _service,
            instance_t _instance, major_version_t _major,
            minor_version_t _minor, bool _must_queue = true) = 0;

    virtual void stop_offer_service(client_t _client, service_t _service,
            instance_t _instance, major_version_t _major,
            minor_version_t _minor, bool _must_queue = true) = 0;

    virtual void request_service(client_t _client, service_t _service,
            instance_t _instance, major_version_t _major,
            minor_version_t _minor) = 0;

    virtual void release_service(client_t _client, service_t _service,
            instance_t _instance) = 0;

    virtual void register_shadow_event(client_t _client, service_t _service,
            instance_t _instance, event_t _notifier,
            const std::set<eventgroup_t> &_eventgroups, event_type_e _type,
            reliability_type_e _reliability, bool _is_provided,
            bool _is_cyclic) = 0;

    virtual void unregister_shadow_event(client_t _client, service_t _service,
            instance_t _instance, event_t _event, bool _is_provided) = 0;

    virtual void subscribe(client_t _client, const vsomeip_sec_client_t *_sec_client,
            service_t _service, instance_t _instance, eventgroup_t _eventgroup,
            major_version_t _major, event_t _event,
            const std::shared_ptr<debounce_filter_t> &_filter) = 0;

    virtual void on_subscribe_nack(client_t _client, service_t _service,
            instance_t _instance, eventgroup_t _eventgroup, event_t _event,
            remote_subscription_id_t _subscription_id) = 0;

    virtual void on_subscribe_ack(client_t _client, service_t _service,
            instance_t _instance, eventgroup_t _eventgroup, event_t _event,
            remote_subscription_id_t _subscription_id) = 0;

    virtual void unsubscribe(client_t _client, const vsomeip_sec_client_t *_sec_client,
            service_t _service, instance_t _instance, eventgroup_t _eventgroup,
            event_t _event) = 0;

    virtual void on_unsubscribe_ack(client_t _client, service_t _service,
            instance_t _instance, eventgroup_t _eventgroup,
            remote_subscription_id_t _unsubscription_id) = 0;

    virtual bool on_message(service_t _service, instance_t _instance,
            const byte_t *_data, length_t _size, bool _reliable,
            client_t _bound_client, const vsomeip_sec_client_t *_sec_client,
            uint8_t _status_check = 0, bool _is_from_remote = false) = 0;

    virtual void on_notification(client_t _client, service_t _service,
            instance_t _instance, const byte_t *_data, length_t _size,
            bool _notify_one = false) = 0;

    virtual void on_stop_offer_service(client_t _client, service_t _service,
            instance_t _instance, major_version_t _major,
            minor_version_t _minor) = 0;

    virtual void on_availability(service_t _service, instance_t _instance,
            availability_state_e _state, major_version_t _major,
            minor_version_t _minor) = 0;

    virtual std::shared_ptr<endpoint> find_local(client_t _client) = 0;

    virtual std::shared_ptr<endpoint> find_or_create_local(
            client_t _client) = 0;
    virtual void remove_local(client_t _client, bool _remove_local) = 0;

    virtual boost::asio::io_context& get_io() = 0;
    virtual client_t get_client() const = 0;
    virtual const vsomeip_sec_client_t *get_sec_client() const = 0;

    virtual void on_pong(client_t _client) = 0;

    virtual void handle_client_error(client_t _client) = 0;

    virtual std::shared_ptr<endpoint_manager_impl> get_endpoint_manager() const = 0;

    virtual void on_resend_provided_events_response(
            pending_remote_offer_id_t _id) = 0;

    virtual client_t find_local_client(service_t _service,
            instance_t _instance) = 0;

    virtual std::set<client_t> find_local_clients(service_t _service,
            instance_t _instance) = 0;

    virtual bool is_subscribe_to_any_event_allowed(
            const vsomeip_sec_client_t *_sec_client,
            client_t _client, service_t _service, instance_t _instance,
            eventgroup_t _eventgroup) = 0;

    virtual void add_known_client(client_t _client,
            const std::string &_client_host) = 0;

    virtual void set_client_host(const std::string &_client_host) = 0;

    virtual bool get_guest(client_t _client,
            boost::asio::ip::address &_address, port_t &_port) const = 0;
    virtual void add_guest(client_t _client,
            const boost::asio::ip::address &_address, port_t _port) = 0;
    virtual void remove_guest(client_t _client) = 0;

    virtual void clear_local_services() = 0;
};

} // namespace vsomeip_v3

#endif // VSOMEIP_V3_ROUTING_MANAGER_STUB_HOST_