Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
Actor Framework
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
cpp-libs
Actor Framework
Commits
d64e42d5
Commit
d64e42d5
authored
Apr 15, 2020
by
Dominik Charousset
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Modernize CMake scaffold, enable bundled builds
parent
4d4ca4cd
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
106 additions
and
81 deletions
+106
-81
libcaf_net/CMakeLists.txt
libcaf_net/CMakeLists.txt
+81
-78
libcaf_net/caf/net/middleman.hpp
libcaf_net/caf/net/middleman.hpp
+4
-0
libcaf_net/src/net/middleman.cpp
libcaf_net/src/net/middleman.cpp
+4
-0
libcaf_net/test/net-test.cpp
libcaf_net/test/net-test.cpp
+13
-0
libcaf_net/test/net/basp/ping_pong.cpp
libcaf_net/test/net/basp/ping_pong.cpp
+4
-3
No files found.
libcaf_net/CMakeLists.txt
View file @
d64e42d5
...
...
@@ -4,18 +4,34 @@ file(GLOB_RECURSE CAF_NET_HEADERS "caf/*.hpp")
# -- add consistency checks for enum to_string implementations -----------------
add_enum_consistency_check
(
"caf/net/basp/connection_state.hpp"
"src/basp/connection_state_strings.cpp"
)
add_enum_consistency_check
(
"caf/net/basp/ec.hpp"
"src/basp/ec_strings.cpp"
)
add_enum_consistency_check
(
"caf/net/basp/message_type.hpp"
"src/basp/message_type_strings.cpp"
)
add_enum_consistency_check
(
"caf/net/operation.hpp"
"src/basp/operation_strings.cpp"
)
# -- list cpp files for caf::net -----------------------------------------------
set
(
CAF_NET_SOURCES
caf_incubator_add_enum_consistency_check
(
"caf/net/basp/connection_state.hpp"
"src/basp/connection_state_strings.cpp"
)
caf_incubator_add_enum_consistency_check
(
"caf/net/basp/ec.hpp"
"src/basp/ec_strings.cpp"
)
caf_incubator_add_enum_consistency_check
(
"caf/net/basp/message_type.hpp"
"src/basp/message_type_strings.cpp"
)
caf_incubator_add_enum_consistency_check
(
"caf/net/operation.hpp"
"src/basp/operation_strings.cpp"
)
# -- collect shared flags in a helper target -----------------------------------
add_library
(
libcaf_net_helper INTERFACE
)
target_include_directories
(
libcaf_net_helper INTERFACE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
"
"
${
CMAKE_BINARY_DIR
}
"
)
if
(
BUILD_SHARED_LIBS AND NOT WIN32
)
target_compile_options
(
libcaf_net_helper INTERFACE -fPIC
)
endif
()
target_link_libraries
(
libcaf_net_helper INTERFACE CAF::core
)
target_compile_definitions
(
libcaf_net_helper INTERFACE libcaf_net_EXPORTS
)
# -- add library targets -------------------------------------------------------
add_library
(
libcaf_net_obj OBJECT
${
CAF_NET_HEADERS
}
src/actor_proxy_impl.cpp
src/application.cpp
src/basp/connection_state_strings.cpp
...
...
@@ -49,59 +65,23 @@ set(CAF_NET_SOURCES
src/worker.cpp
)
# -- list cpp files for caf-net-test ------------------------------------------
set
(
CAF_NET_TEST_SOURCES
test/net/basp/message_queue.cpp
test/net/basp/ping_pong.cpp
test/net/basp/worker.cpp
test/accept_socket.cpp
test/pipe_socket.cpp
test/application.cpp
test/socket.cpp
test/convert_ip_endpoint.cpp
test/socket_guard.cpp
test/datagram_socket.cpp
test/stream_application.cpp
test/datagram_transport.cpp
test/stream_socket.cpp
test/doorman.cpp
test/stream_transport.cpp
test/endpoint_manager.cpp
test/string_application.cpp
test/header.cpp
test/tcp_sockets.cpp
test/ip.cpp
test/transport_worker.cpp
test/multiplexer.cpp
test/transport_worker_dispatcher.cpp
test/udp_datagram_socket.cpp
test/network_socket.cpp
)
# -- add library target --------------------------------------------------------
add_library
(
libcaf_net_obj OBJECT
${
CAF_NET_SOURCES
}
${
CAF_NET_HEADERS
}
)
add_library
(
libcaf_net
"
${
PROJECT_SOURCE_DIR
}
/cmake/dummy.cpp"
add_library
(
libcaf_net
"
${
PROJECT_SOURCE_DIR
}
/cmake/dummy.cpp"
$<TARGET_OBJECTS:libcaf_net_obj>
)
add_library
(
caf::net ALIAS libcaf_net
)
generate_export_header
(
libcaf_net
EXPORT_MACRO_NAME CAF_NET_EXPORT
EXPORT_FILE_NAME
"
${
CMAKE_BINARY_DIR
}
/caf/detail/net_export.hpp"
)
if
(
BUILD_SHARED_LIBS AND NOT WIN32
)
target_compile_options
(
libcaf_net PRIVATE -fPIC
)
target_compile_options
(
libcaf_net_obj PRIVATE -fPIC
)
endif
()
target_link_libraries
(
libcaf_net_obj PRIVATE libcaf_net_helper
)
target_link_libraries
(
libcaf_net P
UBLIC
${
CAF_EXTRA_LDFLAGS
}
${
CAF_LIBRARIES
}
)
target_link_libraries
(
libcaf_net P
RIVATE libcaf_net_helper
)
generate_export_header
(
libcaf_net
EXPORT_MACRO_NAME CAF_NET_EXPORT
EXPORT_FILE_NAME
"
${
CMAKE_BINARY_DIR
}
/caf/detail/net_export.hpp"
STATIC_DEFINE CAF_STATIC_BUILD
)
target_link_libraries
(
libcaf_net INTERFACE CAF::core
)
target_include_directories
(
libcaf_net INTERFACE
$<BUILD_INTERFACE:
${
CMAKE_CURRENT_SOURCE_DIR
}
>
)
target_compile_definitions
(
libcaf_net_obj PRIVATE libcaf_net_EXPORTS
)
add_library
(
CAF::net ALIAS libcaf_net
)
set_target_properties
(
libcaf_net PROPERTIES
EXPORT_NAME net
...
...
@@ -117,8 +97,8 @@ install(FILES "${CMAKE_BINARY_DIR}/caf/detail/net_export.hpp"
install
(
TARGETS libcaf_net
EXPORT CAFTargets
ARCHIVE DESTINATION
${
CMAKE_INSTALL_LIBDIR
}
COMPONENT net
RUNTIME DESTINATION
${
CMAKE_INSTALL_BIN
DIR
}
COMPONENT net
LIBRARY DESTINATION
${
CMAKE_INSTALL_LIB
DIR
}
COMPONENT net
)
LIBRARY DESTINATION
${
CMAKE_INSTALL_LIB
DIR
}
COMPONENT net
RUNTIME DESTINATION
${
CMAKE_INSTALL_BIN
DIR
}
COMPONENT net
)
install
(
DIRECTORY
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/caf"
DESTINATION
${
CMAKE_INSTALL_INCLUDEDIR
}
...
...
@@ -127,22 +107,45 @@ install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/caf"
# -- build unit tests ----------------------------------------------------------
if
(
NOT CAF_NO_UNIT_TESTS
)
add_executable
(
caf-net-test
"
${
PROJECT_SOURCE_DIR
}
/cmake/incubator-test.cpp"
"
${
CAF_INCLUDE_DIR_TEST
}
/caf/test/unit_test.hpp"
"
${
CAF_INCLUDE_DIR_TEST
}
/caf/test/unit_test_impl.hpp"
${
CAF_NET_TEST_SOURCES
}
$<TARGET_OBJECTS:libcaf_net_obj>
)
target_compile_definitions
(
caf-net-test PRIVATE libcaf_net_EXPORTS
)
target_link_libraries
(
caf-net-test
${
CAF_EXTRA_LDFLAGS
}
${
CAF_LIBRARIES
}
)
add_test_suites
(
caf-net-test
"
${
CMAKE_CURRENT_SOURCE_DIR
}
"
${
CAF_NET_TEST_SOURCES
}
)
if
(
NOT CAF_INC_ENABLE_TESTING
)
return
()
endif
()
# -- add this library to the global CAF_LIBRARIES ------------------------------
list
(
APPEND CAF_LIBRARIES libcaf_net
)
set
(
CAF_LIBRARIES
${
CAF_LIBRARIES
}
PARENT_SCOPE
)
add_executable
(
caf-net-test
test/net-test.cpp
$<TARGET_OBJECTS:libcaf_net_obj>
)
target_include_directories
(
caf-net-test PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/test"
)
target_compile_definitions
(
caf-net-test PRIVATE libcaf_net_EXPORTS
)
target_link_libraries
(
caf-net-test PRIVATE
libcaf_net_helper CAF::core CAF::test
)
caf_incubator_add_test_suites
(
caf-net-test
net.basp.message_queue
net.basp.ping_pong
net.basp.worker
accept_socket
pipe_socket
application
socket
convert_ip_endpoint
socket_guard
datagram_socket
stream_application
datagram_transport
stream_socket
doorman
stream_transport
endpoint_manager
string_application
header
tcp_sockets
ip
transport_worker
multiplexer
transport_worker_dispatcher
udp_datagram_socket
network_socket
)
libcaf_net/caf/net/middleman.hpp
View file @
d64e42d5
...
...
@@ -38,6 +38,10 @@ public:
using
middleman_backend_list
=
std
::
vector
<
middleman_backend_ptr
>
;
// -- static utility functions -----------------------------------------------
static
void
init_global_meta_objects
();
// -- constructors, destructors, and assignment operators --------------------
~
middleman
()
override
;
...
...
libcaf_net/src/net/middleman.cpp
View file @
d64e42d5
...
...
@@ -29,6 +29,10 @@
namespace
caf
::
net
{
void
middleman
::
init_global_meta_objects
()
{
// nop
}
middleman
::
middleman
(
actor_system
&
sys
)
:
sys_
(
sys
)
{
mpx_
=
std
::
make_shared
<
multiplexer
>
();
}
...
...
libcaf_net/test/net-test.cpp
0 → 100644
View file @
d64e42d5
#define CAF_TEST_NO_MAIN
#include "caf/test/unit_test_impl.hpp"
#include "caf/init_global_meta_objects.hpp"
#include "caf/net/middleman.hpp"
int
main
(
int
argc
,
char
**
argv
)
{
using
namespace
caf
;
net
::
middleman
::
init_global_meta_objects
();
core
::
init_global_meta_objects
();
return
test
::
main
(
argc
,
argv
);
}
libcaf_net/test/net/basp/ping_pong.cpp
View file @
d64e42d5
...
...
@@ -19,6 +19,7 @@
#define CAF_SUITE net.basp.ping_pong
#include "caf/net/test/host_fixture.hpp"
#include "caf/test/dsl.hpp"
#include "caf/net/backend/test.hpp"
...
...
@@ -123,7 +124,7 @@ behavior ping_actor(event_based_actor* self, actor pong, size_t num_pings,
CAF_MESSAGE
(
"received "
<<
num_pings
<<
" pings, call self->quit"
);
self
->
quit
();
}
return
std
::
make_tuple
(
ping_atom_v
,
value
+
1
);
return
caf
::
make_result
(
ping_atom_v
,
value
+
1
);
},
};
}
...
...
@@ -142,9 +143,9 @@ behavior pong_actor(event_based_actor* self) {
self
->
monitor
(
self
->
current_sender
());
// set next behavior
self
->
become
(
[](
ping_atom
,
int
val
)
{
return
std
::
make_tuple
(
pong_atom_v
,
val
);
});
[](
ping_atom
,
int
val
)
{
return
caf
::
make_result
(
pong_atom_v
,
val
);
});
// reply to 'ping'
return
std
::
make_tuple
(
pong_atom_v
,
value
);
return
caf
::
make_result
(
pong_atom_v
,
value
);
},
};
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment