18 #ifndef IOX_POSH_GW_CHANNEL_HPP
19 #define IOX_POSH_GW_CHANNEL_HPP
21 #include "iceoryx_posh/capro/service_description.hpp"
22 #include "iceoryx_posh/iceoryx_posh_types.hpp"
23 #include "iceoryx_utils/cxx/expected.hpp"
24 #include "iceoryx_utils/cxx/optional.hpp"
25 #include "iceoryx_utils/internal/objectpool/objectpool.hpp"
33 enum class ChannelError : uint8_t
56 template <
typename IceoryxTerminal,
typename ExternalTerminal>
59 using IceoryxTerminalPtr = std::shared_ptr<IceoryxTerminal>;
60 using IceoryxTerminalPool = cxx::ObjectPool<IceoryxTerminal, MAX_CHANNEL_NUMBER>;
61 using ExternalTerminalPtr = std::shared_ptr<ExternalTerminal>;
62 using ExternalTerminalPool = cxx::ObjectPool<ExternalTerminal, MAX_CHANNEL_NUMBER>;
66 const IceoryxTerminalPtr iceoryxTerminal,
67 const ExternalTerminalPtr externalTerminal) noexcept;
77 template <
typename IceoryxPubSubOptions>
79 const IceoryxPubSubOptions& options) noexcept;
82 IceoryxTerminalPtr getIceoryxTerminal() const noexcept;
83 ExternalTerminalPtr getExternalTerminal() const noexcept;
86 static IceoryxTerminalPool s_iceoryxTerminals;
87 static ExternalTerminalPool s_externalTerminals;
89 capro::ServiceDescription m_service;
90 IceoryxTerminalPtr m_iceoryxTerminal;
91 ExternalTerminalPtr m_externalTerminal;
97 #include "iceoryx_posh/internal/gateway/channel.inl"
class for the identification of a communication event including information on the service,...
Definition: service_description.hpp:86
A data structure representing a channel between Iceoryx and an external system.
Definition: channel.hpp:58
static cxx::expected< Channel, ChannelError > create(const capro::ServiceDescription &service, const IceoryxPubSubOptions &options) noexcept
create Creates a channel for the given service whose terminals reside in a static object pool.
Definition: service_description.hpp:29