Line data Source code
1 : /********************************************************************************
2 : * Copyright (c) 2026 Accenture
3 : *
4 : * This program and the accompanying materials are made available under the
5 : * terms of the Apache License Version 2.0 which is available at
6 : * https://www.apache.org/licenses/LICENSE-2.0
7 : *
8 : * SPDX-License-Identifier: Apache-2.0
9 : ********************************************************************************/
10 :
11 : #pragma once
12 :
13 : #include "someip/IRpcHandler.h"
14 :
15 : #include <ip/IPAddress.h>
16 :
17 : #include <etl/delegate.h>
18 : #include <etl/optional.h>
19 :
20 : namespace someip
21 : {
22 :
23 : class SomeIpMessage;
24 :
25 : class IRpcReceiver
26 : {
27 : protected:
28 38 : IRpcReceiver() = default;
29 :
30 : public:
31 : IRpcReceiver(IRpcReceiver const&) = delete;
32 : IRpcReceiver& operator=(IRpcHandler const&) = delete;
33 :
34 38 : virtual ~IRpcReceiver() = default;
35 :
36 : /**
37 : * Pure virtual function that sets PriorityRpcHandler. If a PriorityRpcHandler
38 : * is set, it will be used before the RpcHandler.
39 : */
40 : virtual void setPriorityRpcHandler(IRpcHandler& priorityRpcHandler) = 0;
41 :
42 : /**
43 : * Pure virtual function that removes PriorityRpcHandler.
44 : */
45 : virtual void removePriorityRpcHandler() = 0;
46 :
47 : /**
48 : * Pure virtual function that requests multicast reception if available.
49 : */
50 : virtual bool requestMulticastReception(::ip::IPEndpoint const& multicastEndpoint) = 0;
51 :
52 : /**
53 : * Pure virtual function that cancels multicast reception if applicable.
54 : */
55 : virtual void cancelMulticastReception(::ip::IPEndpoint const& multicastEndpoint) = 0;
56 : };
57 :
58 : } // namespace someip
|