Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Iox #65 initial implementation cyclonedds to iox gateway #135

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
4cdce1e
iox-#65 Added required files to be filled in.
orecham May 26, 2020
a0f38c7
iox-#65 Rename iox2dds to iox_to_dds to be consistent.
orecham May 26, 2020
73f7931
iox-#65 Added skeleton classes.
orecham May 27, 2020
5a60e82
iox-#65 Make skeleton buildable.
orecham May 27, 2020
a95946a
iox-#65 Rename Channel to OutputChannel since we require an InputChan…
orecham May 27, 2020
331e48b
iox-#65 Set up input channels for all services in config.
orecham May 27, 2020
532cfd9
iox-#65 Begin refactoring common gateway logic into a base class.
orecham May 27, 2020
de970d9
iox-#65 Moved common dds gateway logic to a base class.
orecham May 28, 2020
e4c2adc
iox-#65 Begin factoring out common channel logic.
orecham May 28, 2020
bc986bf
iox-#65 Factored out common channel logic into base class.
orecham May 28, 2020
8c8dd01
iox-#65 Updated iox2dds gateway to use generic base class.
orecham May 28, 2020
3f50767
iox-#65 Factor out gateway running and shutdown logic to base class.
orecham May 28, 2020
436c61b
iox-#65 Factor out more gateway stuff into base class.
orecham May 28, 2020
54bf1d5
iox-#65 Reduced amount of gateway templates - specify channel instead…
orecham May 28, 2020
ce3f2b7
iox-#65 Create channels for preconfigured services.
orecham Jun 2, 2020
620d668
iox-#65 Declare constructors as noexcept.
orecham Jun 2, 2020
0505fe9
iox-#65 Remove unused classes.
orecham Jun 2, 2020
871633e
iox-#65 Fix deadlock with channel access.
orecham Jun 2, 2020
dd56561
iox-#65 Fix template name in Channel class.
orecham Jun 2, 2020
0ce1ad5
iox-#65 Rename module to iceoryx_dds.
orecham Jun 3, 2020
38b5f67
iox-#65 Rename module to iceoryx_dds.
orecham Jun 3, 2020
4848f9c
iox-#65 Update include namespace to iceoryx_dds.
orecham Jun 3, 2020
1a8a906
iox-#65 Add factory method to allow injection of mock channels when t…
orecham Jun 4, 2020
59d1cf0
iox-#65 Fix tests.
orecham Jun 4, 2020
228b7de
iox-#65 Move configuration logic to concrete gateway implementation.
orecham Jun 4, 2020
47bf2a8
iox-#65 Made collection of channels in GenericDDSGateway private so t…
orecham Jun 5, 2020
6467373
iox-#65 Update tests to work with new dds gateway API.
orecham Jun 5, 2020
0b0e11c
iox-#65 Add missing copyright notices.
orecham Jun 5, 2020
ff24777
iox-#65 Add tests for DDSGatewayGeneric
orecham Jun 5, 2020
58333c7
iox-#65 Added more tests for dds gateway generic.
orecham Jun 7, 2020
62a0c87
iox-#65 Updated unit tests for iceoryx2dds gateway to properly test f…
orecham Jun 7, 2020
5958dee
iox-#65 Fixed expectations in tests.
orecham Jun 7, 2020
cbd8b4e
iox-#65 Remove redundant run-check flags.
orecham Jun 7, 2020
d614f08
iox-#65 Added test for loading configuration in iceoryx2dds gateway.
orecham Jun 7, 2020
e5cc9a8
iox-#65 Clean up code for PR & run clang format.
orecham Jun 7, 2020
a93d7e5
iox-#65 Clean up code for PR & run clang format.
orecham Jun 7, 2020
21870c0
Merge branch 'master' into iox-#65-initial-implementation-cyclonedds-…
orecham Jun 10, 2020
3ef39c8
iox-#65 Change to include guards.
orecham Jun 10, 2020
4ec6394
Merge branch 'master' of ssh://sourcecode01.de.bosch.com:7999/aos/ice…
orecham Jun 16, 2020
b8a19b5
iox-#65 Code cleanliness fixes.
orecham Jun 16, 2020
9a7b977
iox-#65 Fixed header organization.
orecham Jun 17, 2020
e7ee7c6
iox-#65 Change std::function to cxx::function_ref where possible
orecham Jun 17, 2020
5a2423a
iox-#65 Remove unneeded move/copy constructors.
orecham Jun 17, 2020
cee04ae
iox-#65 Avoid adding duplicate channels.
orecham Jun 17, 2020
f6cd43a
iox-#65 Ignore wildcard services.
orecham Jun 18, 2020
d74b0a2
iox-#65 Test boundary conditions of generic dds gateway.
orecham Jun 18, 2020
5091808
iox-#65 Add errors for gateway to enum.
orecham Jun 18, 2020
01116fd
iox-#65 Add more error handling.
orecham Jun 18, 2020
0fc4869
Merge branch 'master' of ssh://sourcecode01.de.bosch.com:7999/aos/ice…
orecham Jun 18, 2020
b1c4ed5
Merge branch 'master' into iox-#64-initial-implementation-iox-to-dds-…
orecham Jun 16, 2020
7f0c3ff
iox-#65 Code cleanliness fixes.
orecham Jun 16, 2020
9b8a20f
iox-#65 Fixed header organization.
orecham Jun 17, 2020
6eee4e3
iox-#65 Change std::function to cxx::function_ref where possible
orecham Jun 17, 2020
688b773
iox-#65 Remove unneeded move/copy constructors.
orecham Jun 17, 2020
64fd03a
iox-#65 Avoid adding duplicate channels.
orecham Jun 17, 2020
4b3e7d0
iox-#65 Ignore wildcard services.
orecham Jun 18, 2020
cc34dcd
iox-#65 Test boundary conditions of generic dds gateway.
orecham Jun 18, 2020
abcc1f3
iox-#65 Add errors for gateway to enum.
orecham Jun 18, 2020
3a7474d
iox-#65 Add more error handling.
orecham Jun 18, 2020
eef64e2
Merge branch 'master' into iox-#64-initial-implementation-iox-to-dds-…
orecham Jun 18, 2020
26dd024
Merge branch 'iox-#65-initial-implementation-cyclonedds-to-iox-gatewa…
FerdinandSpitzschnueffler Jun 23, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 27 additions & 18 deletions iceoryx_dds_gateway/CMakeLists.txt → iceoryx_dds/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.7)

set(iceoryx_dds_gateway_VERSION 0.1.0)
project(iceoryx_dds_gateway VERSION ${iceoryx_dds_gateway_VERSION})
file (STRINGS "../VERSION" iceoryx_dds_VERSION)
project(iceoryx_dds VERSION ${iceoryx_dds_VERSION})
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shouldn't we use the same version throughout iceoryx?

Copy link
Contributor

@elfenpiff elfenpiff Jun 11, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No I don't think so, we should have completely different and independent versioning system here. It should be hexadecimal but with roman numbers. And of course 5 levels mixed with letters, like XI.blubb.12.ae.121 ;) What do you think @elBoberido @FerdinandSpitzschnueffler

Or we have a consistent version number throughout the project ... this would also be fine by me!

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✔️


option(BUILD_TESTS "build test binaries")

Expand All @@ -15,7 +15,7 @@ include(IceoryxPackageHelper)
#
setup_package_name_and_create_files(
NAME ${PROJECT_NAME}
NAMESPACE iceoryx_dds_gateway
NAMESPACE iceoryx_dds
PROJECT_PREFIX ${PREFIX}
)

Expand All @@ -34,33 +34,34 @@ endif()
#
########## build building-block library ##########
#
add_library(ioxdds
add_library(iceoryx_dds
STATIC
source/ioxdds/log/logging.cpp
source/iceoryx_dds/log/logging.cpp
)
add_library(${PROJECT_NAMESPACE}::ioxdds ALIAS ioxdds)
add_library(${PROJECT_NAMESPACE}::iceoryx_dds ALIAS iceoryx_dds)

target_compile_options(ioxdds PUBLIC -std=c++11)
target_compile_options(iceoryx_dds PUBLIC -std=c++11)

target_include_directories(ioxdds
target_include_directories(iceoryx_dds
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include/${PREFIX}>
)
target_link_libraries(ioxdds
target_link_libraries(iceoryx_dds
PRIVATE
iceoryx_posh::iceoryx_posh
iceoryx_utils::iceoryx_utils
)

if(USE_CYCLONE_DDS)
target_sources(ioxdds
target_sources(iceoryx_dds
PRIVATE
source/ioxdds/dds/cyclone_data_writer.cpp
source/iceoryx_dds/dds/cyclone_data_reader.cpp
source/iceoryx_dds/dds/cyclone_data_writer.cpp
)
target_compile_definitions(ioxdds PUBLIC -DUSE_CYCLONE_DDS)
target_compile_definitions(iceoryx_dds PUBLIC -DUSE_CYCLONE_DDS)
idl_ddscxx_generate(mempoolMessages_lib "msg/Mempool.idl")
target_link_libraries(ioxdds
target_link_libraries(iceoryx_dds
PUBLIC
CycloneDDS_CXX_API::ddscxx
mempoolMessages_lib
Expand All @@ -70,12 +71,20 @@ endif()
#
########## build gateway apps ##########
#
add_executable(gateway_iox2dds
source/iox2dds_app/main.cpp
add_executable(gateway_iceoryx2dds
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question to all, do we have a naming convention for binaries?
We have roudi and iceoryx_introspection. Do we maybe want an iceoryx prefix for out binaries? This would mean we have iceoryx2dds_gateway but there is an issue with dds2iceoryx_gateway and iceoryx_dds2iceoryx_gateway just looks weird

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the idea of a prefix for our binaries but I would exclude example binaries from that rule. Maybe iox or ix like ix_roudi, ix_dds2iceoryx_gw, ix_iceoryx2dds_gw?!

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we have a vote ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

at first maybe just a discussion with the pros and cons

Copy link
Contributor

@orecham orecham Jun 18, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will be addressed later, I have created an issue: #147

source/iceoryx2dds_app/main.cpp
)
target_link_libraries(gateway_iox2dds
target_link_libraries(gateway_iceoryx2dds
iceoryx_posh::iceoryx_posh
${PROJECT_NAMESPACE}::ioxdds
${PROJECT_NAMESPACE}::iceoryx_dds
)

add_executable(gateway_dds2iceoryx
source/dds2iceoryx_app/main.cpp
)
target_link_libraries(gateway_dds2iceoryx
iceoryx_posh::iceoryx_posh
${PROJECT_NAMESPACE}::iceoryx_dds
)

#
Expand All @@ -89,7 +98,7 @@ endif(BUILD_TESTS)
########## export library ##########
#
setup_install_directories_and_export_package(
TARGETS gateway_iox2dds
TARGETS gateway_iceoryx2dds gateway_dds2iceoryx
INCLUDE_DIRECTORY include/
)

File renamed without changes.
35 changes: 35 additions & 0 deletions iceoryx_dds/include/iceoryx_dds/dds/cyclone_data_reader.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
// Copyright (c) 2020 by Robert Bosch GmbH. All rights reserved.
//
// 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.

#ifndef IOX_DDS_DDS_CYCLONE_DATA_READER_HPP
#define IOX_DDS_DDS_CYCLONE_DATA_READER_HPP

#include "iceoryx_dds/dds/data_reader.hpp"

namespace iox
{
namespace dds
{

/// @note Implementation coming soon.
class CycloneDataReader : DataReader<CycloneDataReader>
{
public:
CycloneDataReader(IdString serviceId, IdString instanceId, IdString eventId) noexcept;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please make every argument const.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

don't you want to do do something with the parameter? The implementation is empty

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Implementation comes in the next PR. This PR included the generic gateway and the "skeleton" of the gateway implementation.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

could you maybe add something like /// @todo implementing later or similar, to indicate which parts needs work?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are @todos allowed ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think in this case it should be allowed, since it's indicating that it soon will be implemented

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a comment as a note, hope this is sufficient.

};

} // namespace dds
} // namespace iox

#endif // IOX_DDS_DDS_CYCLONE_DATA_READER_HPP
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,15 @@
// 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.
#ifndef IOX_DDS_GATEWAY_DDS_CYCLONE_DATA_WRITER_HPP
#define IOX_DDS_GATEWAY_DDS_CYCLONE_DATA_WRITER_HPP

#include <Mempool_DCPS.hpp>
#ifndef IOX_DDS_DDS_CYCLONE_DATA_WRITER_HPP
#define IOX_DDS_DDS_CYCLONE_DATA_WRITER_HPP

#include "iceoryx_dds/dds/data_writer.hpp"

#include <dds/dds.hpp>
#include <Mempool_DCPS.hpp>

#include "ioxdds/dds/data_writer.hpp"

namespace iox
{
Expand Down Expand Up @@ -61,4 +63,4 @@ class CycloneDataWriter : public iox::dds::DataWriter<CycloneDataWriter>
} // namespace dds
} // namespace iox

#endif // IOX_DDS_GATEWAY_DDS_CYCLONE_DATA_WRITER_HPP
#endif // IOX_DDS_DDS_CYCLONE_DATA_WRITER_HPP
34 changes: 34 additions & 0 deletions iceoryx_dds/include/iceoryx_dds/dds/data_reader.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// Copyright (c) 2020 by Robert Bosch GmbH. All rights reserved.
//
// 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.

#ifndef IOX_DDS_DDS_DATA_READER_HPP
#define IOX_DDS_DDS_DATA_READER_HPP

#include "iceoryx_utils/cxx/string.hpp"

namespace iox
{
namespace dds
{
using IdString = iox::cxx::string<100u>;

/// @note Implementation coming soon.
template <typename Impl>
class DataReader
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this unfinished code or code in progress?

{
};
}
}

#endif // IOX_DDS_DDS_DATA_READER_HPP
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,13 @@
// 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.
#ifndef IOX_DDS_GATEWAY_DDS_DATA_WRITER_HPP
#define IOX_DDS_GATEWAY_DDS_DATA_WRITER_HPP

#include <cstdint>
#ifndef IOX_DDS_DDS_DATA_WRITER_HPP
#define IOX_DDS_DDS_DATA_WRITER_HPP

#include "iceoryx_utils/cxx/string.hpp"

#include <iceoryx_utils/cxx/string.hpp>
#include <cstdint>

namespace iox
{
Expand Down Expand Up @@ -72,6 +73,6 @@ class DataWriter
} // namespace dds
} // namespace iox

#include "ioxdds/internal/dds/data_writer.inl"
#include "iceoryx_dds/internal/dds/data_writer.inl"

#endif // IOX_DDS_GATEWAY_DDS_DATA_WRITER_HPP
#endif // IOX_DDS_DDS_DATA_WRITER_HPP
32 changes: 32 additions & 0 deletions iceoryx_dds/include/iceoryx_dds/dds/dds_config.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// Copyright (c) 2020 by Robert Bosch GmbH. All rights reserved.
//
// 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.

#ifndef IOX_DDS_DDS_CONFIG_HPP
#define IOX_DDS_DDS_CONFIG_HPP

#include "iceoryx_posh/iceoryx_posh_types.hpp"

namespace iox
{
namespace dds
{
static constexpr units::Duration DISCOVERY_PERIOD = 1000_ms;
static constexpr units::Duration FORWARDING_PERIOD = 50_ms;
static constexpr uint32_t SUBSCRIBER_CACHE_SIZE = 128u;
static constexpr uint32_t MAX_CHANNEL_NUMBER = iox::MAX_PORT_NUMBER;

} // namespace dds
} // namespace iox

#endif // IOX_DDS_DDS_CONFIG_HPP
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@
// 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.
#ifndef IOX_DDS_GATEWAY_DDS_DDS_TYPES_HPP
#define IOX_DDS_GATEWAY_DDS_DDS_TYPES_HPP

#include "ioxdds/dds/data_writer.hpp"
#ifndef IOX_DDS_DDS_DDS_TYPES_HPP
#define IOX_DDS_DDS_DDS_TYPES_HPP

#ifdef USE_CYCLONE_DDS
#include "ioxdds/dds/cyclone_data_writer.hpp"
#include "iceoryx_dds/dds/cyclone_data_reader.hpp"
#include "iceoryx_dds/dds/cyclone_data_writer.hpp"
#else
#error "A DDS implementation must be provided."
#endif
Expand All @@ -26,13 +26,17 @@ namespace iox
{
namespace dds
{
// Fixed strings
using IdString = iox::cxx::string<100u>;

// DDS implementation defined with compiler flags
#ifdef USE_CYCLONE_DDS
using data_reader_t = iox::dds::CycloneDataReader;
using data_writer_t = iox::dds::CycloneDataWriter;
#else
#error "A DDS implementation must be set."
#endif
}
}

#endif // IOX_DDS_GATEWAY_DDS_DDS_TYPES_HPP
#endif // IOX_DDS_DDS_DDS_TYPES_HPP
88 changes: 88 additions & 0 deletions iceoryx_dds/include/iceoryx_dds/gateway/channel.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
// Copyright (c) 2020 by Robert Bosch GmbH. All rights reserved.
//
// 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.

#ifndef IOX_DDS_GATEWAY_CHANNEL_HPP
#define IOX_DDS_GATEWAY_CHANNEL_HPP

#include "iceoryx_dds/dds/dds_config.hpp"
#include "iceoryx_posh/capro/service_description.hpp"
#include "iceoryx_utils/cxx/expected.hpp"
#include "iceoryx_utils/internal/objectpool/objectpool.hpp"

#include <memory>

namespace iox
{
namespace dds
{

enum class ChannelError : uint8_t
{
OBJECT_POOL_FULL
};

///
/// @class Channel
/// @brief A data structure representing a channel between Iceoryx and DDS.
///
/// The class couples related iceoryx and dds entities that communicate with eachother to form the communication
/// channel.
/// For example: An Iceoryx subscriber and its corresponding DDS data writer, which communicate eachother to form
/// an outbound communication channel.
/// These entites are conceptualized as channel "Terminals".
///
/// The structure holds pointers to the instances of the terminals.
/// The terminals can be created and managed externally, in which case the structure only serves as a means of coupling
/// the two.
/// This can be achieved by simply calling the constructor with pointers to them.
///
/// Alternatively, the class can manage the terminals internally in a static object pool, automatically
/// cleaning them up when the channel is discarded.
/// This can be achieved via the Channel::create method.
///
template <typename IceoryxTerminal, typename DDSTerminal>
class Channel
{
using IceoryxTerminalPtr = std::shared_ptr<IceoryxTerminal>;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we intend to certify this code? If so we cannot use std::shared_ptr but for now it is alright to use.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I fear not, @budrus are shared_ptr on the list?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will leave this to be addressed later if it indeed needs to be certified.

using IceoryxTerminalPool = iox::cxx::ObjectPool<IceoryxTerminal, MAX_CHANNEL_NUMBER>;
using DDSTerminalPtr = std::shared_ptr<DDSTerminal>;
using DDSTerminalPool = iox::cxx::ObjectPool<DDSTerminal, MAX_CHANNEL_NUMBER>;

public:
Channel(const iox::capro::ServiceDescription& service,
const IceoryxTerminalPtr iceoryxTerminal,
const DDSTerminalPtr ddsTerminal) noexcept;
constexpr bool operator==(const Channel<IceoryxTerminal, DDSTerminal>& rhs) const noexcept;

static iox::cxx::expected<Channel, ChannelError> create(const iox::capro::ServiceDescription& service) noexcept;

iox::capro::ServiceDescription getService() const noexcept;
IceoryxTerminalPtr getIceoryxTerminal() const noexcept;
DDSTerminalPtr getDDSTerminal() const noexcept;

private:
static IceoryxTerminalPool s_iceoryxTerminals;
static DDSTerminalPool s_ddsTerminals;

iox::capro::ServiceDescription m_service;
IceoryxTerminalPtr m_iceoryxTerminal;
DDSTerminalPtr m_ddsTerminal;
};

} // namespace dds
} // namespace iox

#include "iceoryx_dds/internal/gateway/channel.inl"

#endif // IOX_DDS_DDS_DDS_TYPES_HPP
Loading