Skip to content

Commit 5ca0c8a

Browse files
rex-schilaskygithub-actions[bot]FlorianReimold
authored
Core: Added new eCAL Service Implementation (#1072)
- Client and server exchange their protocol version via registration layer. - Server will not start before any client registration is received. - Server starts with clients protocol version (currently 0 or 1). - A server can handle multiple clients with different protocol version. - A client can be connected to multiple server with different protocol versions. - Protocol Version 1 includes a protocol handshake as first step, so the protocol can be made compatible with future versions - IPv6 is now supported - The eCAL API is untouched - Many tests have been added that test the new Service Library - The tests testing eCAL itself regarding services have been adapted and activated. They now work. Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Florian Reimold <11774314+FlorianReimold@users.noreply.github.com>
1 parent 8bf36ec commit 5ca0c8a

File tree

78 files changed

+9987
-1673
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+9987
-1673
lines changed

.clang-tidy

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ Checks: "-*,
2525
-bugprone-narrowing-conversions,
2626
2727
cppcoreguidelines-*,
28+
-cppcoreguidelines-avoid-const-or-ref-data-members,
29+
-cppcoreguidelines-avoid-do-while,
2830
-cppcoreguidelines-avoid-magic-numbers,
2931
-cppcoreguidelines-macro-usage,
3032
-cppcoreguidelines-narrowing-conversions,
@@ -33,6 +35,7 @@ Checks: "-*,
3335
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
3436
-cppcoreguidelines-pro-type-vararg,
3537
-cppcoreguidelines-pro-type-reinterpret-cast,
38+
-cppcoreguidelines-pro-type-const-cast,
3639
3740
misc-*,
3841
-misc-non-private-member-variables-in-classes,

CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,7 @@ add_subdirectory(app/app_pb)
324324
# --------------------------------------------------------
325325
# ecal core
326326
# --------------------------------------------------------
327+
add_subdirectory(ecal/service)
327328
add_subdirectory(ecal/core)
328329

329330
# --------------------------------------------------------
@@ -469,7 +470,8 @@ if(BUILD_ECAL_TESTS)
469470
# ------------------------------------------------------
470471
# test ecal
471472
# ------------------------------------------------------
472-
#add_subdirectory(testing/ecal/clientserver_test) THIS TEST IS NOT ABLE TO RUN ON GH ACTIONS
473+
add_subdirectory(testing/ecal/clientserver_test) #THIS TEST IS NOT ABLE TO RUN ON GH ACTIONS
474+
473475
add_subdirectory(testing/ecal/core_test)
474476
add_subdirectory(testing/ecal/event_test)
475477
add_subdirectory(testing/ecal/expmap_test)

app/mon/mon_gui/src/widgets/ecalmon_tree_widget/service_widget.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ void ServiceWidget::autoSizeColumns()
114114
example_service_pb.set_uname("eCALRPCService____");
115115
example_service_pb.set_pid(999999);
116116
example_service_pb.set_sname("eCALRPCService____");
117-
example_service_pb.set_tcp_port(999999);
117+
example_service_pb.set_tcp_port_v1(999999);
118118

119119
eCAL::pb::Method* method = example_service_pb.mutable_methods()->Add();
120120
method->set_mname("ShutdownProcessName____");

app/mon/mon_gui/src/widgets/models/service_tree_item.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ QVariant ServiceTreeItem::data(Columns column, Qt::ItemDataRole role) const
7878
}
7979
else if (column == Columns::TCP_PORT)
8080
{
81-
return service_.tcp_port();
81+
return service_.tcp_port_v1();
8282
}
8383
else if (column == Columns::MNAME)
8484
{

app/mon/mon_tui/src/model/monitor.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ class MonitorModel
266266
service.process_name = std::move(*s.mutable_pname());
267267
service.unit_name = std::move(*s.mutable_uname());
268268
service.registration_clock = s.rclock();
269-
service.tcp_port = s.tcp_port();
269+
service.tcp_port = s.tcp_port_v1();
270270
for(auto &m: *s.mutable_methods())
271271
{
272272
auto &method = service.methods.emplace_back();

ecal/core/CMakeLists.txt

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ if(UNIX)
5757
endif()
5858
endif()
5959

60-
6160
if(ECAL_NPCAP_SUPPORT)
6261
set(ecal_io_cpp_src_npcap
6362
src/io/udp_receiver_npcap.cpp
@@ -131,19 +130,23 @@ set(ecal_readwrite_cpp_src
131130
)
132131

133132
set(ecal_readwrite_shm_cpp_src
134-
src/readwrite/ecal_reader_shm.cpp
135-
src/readwrite/ecal_writer_shm.cpp
133+
src/readwrite/ecal_reader_shm.cpp
134+
src/readwrite/ecal_writer_shm.cpp
136135
)
137136

138137
set(ecal_service_cpp_src
139138
src/service/ecal_clientgate.cpp
139+
src/service/ecal_clientgate.h
140+
src/service/ecal_servicegate.cpp
141+
src/service/ecal_servicegate.h
140142
src/service/ecal_service_client.cpp
141143
src/service/ecal_service_client_impl.cpp
144+
src/service/ecal_service_client_impl.h
142145
src/service/ecal_service_server.cpp
143146
src/service/ecal_service_server_impl.cpp
144-
src/service/ecal_tcpclient.cpp
145-
src/service/ecal_servicegate.cpp
146-
src/service/ecal_tcpserver.cpp
147+
src/service/ecal_service_server_impl.h
148+
src/service/ecal_service_singleton_manager.cpp
149+
src/service/ecal_service_singleton_manager.h
147150
)
148151

149152
set(ecal_cmn_cpp_src
@@ -153,7 +156,7 @@ set(ecal_cmn_cpp_src
153156
src/ecal_config.cpp
154157
src/ecal_config_reader.cpp
155158
src/ecal_descgate.cpp
156-
src/ecal_event.cpp
159+
src/ecal_event.cpp
157160
src/ecal_global_accessors.cpp
158161
src/ecal_globals.cpp
159162
src/ecal_log.cpp
@@ -261,16 +264,6 @@ set(ecal_readwrite_shm_header_src
261264
src/readwrite/ecal_writer_shm.h
262265
)
263266

264-
set(ecal_service_header_src
265-
src/service/asio_server.h
266-
src/service/ecal_clientgate.h
267-
src/service/ecal_service_client_impl.h
268-
src/service/ecal_service_server_impl.h
269-
src/service/ecal_servicegate.h
270-
src/service/ecal_tcpclient.h
271-
src/service/ecal_tcpserver.h
272-
)
273-
274267
set(ecal_cmn_header_src
275268
src/convert_utf.h
276269
src/ecal_buffer_payload_writer.h
@@ -422,7 +415,6 @@ ecal_add_ecal_shared_library(${PROJECT_NAME}
422415
${ecal_pubsub_header_src}
423416
${ecal_readwrite_header_src}
424417
${ecal_readwrite_shm_header_src}
425-
${ecal_service_header_src}
426418

427419
${ecal_header_base}
428420
${ecal_header_cimpl}
@@ -498,6 +490,7 @@ target_link_libraries(${PROJECT_NAME}
498490
Threads::Threads
499491
eCAL::ecal-utils
500492
tcp_pubsub::tcp_pubsub
493+
ecal_service
501494
)
502495

503496
set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER ecal/core)
@@ -545,7 +538,6 @@ if(NOT ${CMAKE_VERSION} VERSION_LESS "3.8.0")
545538
${ecal_pubsub_header_src}
546539
${ecal_readwrite_header_src}
547540
${ecal_readwrite_shm_header_src}
548-
${ecal_service_header_src}
549541

550542
${ecal_header_cmn}
551543
${ecal_header_cimpl}

0 commit comments

Comments
 (0)