-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy pathBridge.hpp
More file actions
85 lines (70 loc) · 2.67 KB
/
Bridge.hpp
File metadata and controls
85 lines (70 loc) · 2.67 KB
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
// Copyright 2021 Proyectos y Sistemas de Mantenimiento SL (eProsima).
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
/**
* @file Bridge.hpp
*/
#ifndef __SRC_DDSROUTERCORE_COMMUNICATION_BRIDGE_HPP_
#define __SRC_DDSROUTERCORE_COMMUNICATION_BRIDGE_HPP_
#include <core/ParticipantsDatabase.hpp>
#include <ddsrouter_core/types/participant/ParticipantId.hpp>
#include <ddsrouter_utils/thread/manager/IManager.hpp>
namespace eprosima {
namespace ddsrouter {
namespace core {
/**
* Bridge object manages the communication of a DDS Topic (\c RealTopic or \c RPCTopic).
* It could be seen as a channel of communication as a DDS Topic, with several Participants that
* could publish or subscribe in this specific Topic.
*
* It is implemented by \c DDSBridge and \c RPCBridge , which handle \c RealTopic and \c RPCTopic , respectively.
*/
class Bridge
{
public:
/**
* Bridge constructor by required values
*
* @param participant_database: Collection of Participants to manage communication
* @param payload_pool: Payload Pool that handles the reservation/release of payloads throughout the DDS Router
* @param thread_pool: Shared pool of threads in charge of data transmission.
*
* @note Always created disabled. Enable in children constructors if needed.
*
*/
Bridge(
std::shared_ptr<ParticipantsDatabase> participants_database,
std::shared_ptr<PayloadPool> payload_pool,
std::shared_ptr<utils::thread::IManager> thread_manager);
/**
* Enable bridge
*/
virtual void enable() noexcept = 0;
/**
* Disable bridge
*/
virtual void disable() noexcept = 0;
protected:
//! Collection of Participants to manage communication
const std::shared_ptr<ParticipantsDatabase> participants_;
//! Common shared payload pool
std::shared_ptr<PayloadPool> payload_pool_;
//! Common shared thread pool
std::shared_ptr<utils::thread::IManager> thread_manager_;
//! Whether the Bridge is currently enabled
std::atomic<bool> enabled_;
};
} /* namespace core */
} /* namespace ddsrouter */
} /* namespace eprosima */
#endif /* __SRC_DDSROUTERCORE_COMMUNICATION_BRIDGE_HPP_ */