Browse Source

兼容最新的asio

3.0.0
tearshark 1 year ago
parent
commit
86b4150df3
3 changed files with 14 additions and 14 deletions
  1. 1
    1
      CMakeLists.txt
  2. 4
    2
      benchmark/CMakeLists.txt
  3. 9
    11
      benchmark/benchmark_asio_echo.cpp

+ 1
- 1
CMakeLists.txt View File

@@ -164,7 +164,7 @@ if(CMAKE_ENABLE_UNIT_TEST)
${ALL_TUTORIAL_FILES})
target_link_libraries(test_librf PUBLIC librf)
add_subdirectory(benchmark)
#add_subdirectory(benchmark)
endif()

+ 4
- 2
benchmark/CMakeLists.txt View File

@@ -1,13 +1,15 @@
set(BENCHMARK_FILES "")
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} BENCHMARK_FILES)

find_package(asio REQUIRED)

foreach(BENCHMARK_FILE_PATH ${BENCHMARK_FILES})
string(REGEX REPLACE ".+[/\]([^/\.]+)\\.cpp" "\\1" BENCHMARK_FILE_NAME ${BENCHMARK_FILE_PATH})
message(STATUS "Generating benchmark target: ${BENCHMARK_FILE_NAME}")

add_executable(${BENCHMARK_FILE_NAME} ${BENCHMARK_FILE_PATH})
target_link_libraries(${BENCHMARK_FILE_NAME} PUBLIC librf)
target_link_libraries(${BENCHMARK_FILE_NAME} PUBLIC librf asio asio::asio)
target_compile_definitions(${BENCHMARK_FILE_NAME}
PRIVATE LIBRF_TUTORIAL_STAND_ALONE=1
PRIVATE LIBRF_TUTORIAL_STAND_ALONE=1 ASIO_STANDALONE
)
endforeach(BENCHMARK_FILE_PATH)

+ 9
- 11
benchmark/benchmark_asio_echo.cpp View File

@@ -7,9 +7,7 @@
#pragma warning(disable : 4834)
using namespace asio;
using namespace asio::ip;
using namespace librf;
template<class _Ty, size_t _Size>
@@ -43,10 +41,10 @@ future_t<> RunEchoSession(tcp::socket socket)
try
{
bytes_transferred += co_await socket.async_read_some(
asio::buffer(buffer.data() + bytes_transferred, buffer.size() - bytes_transferred), rf_task);
asio::buffer(buffer.data() + bytes_transferred, buffer.size() - bytes_transferred), asio::rf_task);
if (bytes_transferred >= buffer.size())
{
co_await asio::async_write(socket, asio::buffer(buffer, buffer.size()), rf_task);
co_await asio::async_write(socket, asio::buffer(buffer, buffer.size()), asio::rf_task);
bytes_transferred = 0;
g_echo_count.fetch_add(1, std::memory_order_release);
@@ -73,7 +71,7 @@ void AcceptConnections(tcp::acceptor & acceptor, uarray<tcp::socket, _N> & socke
{
try
{
co_await acceptor.async_accept(socketes.c[idx], rf_task);
co_await acceptor.async_accept(socketes.c[idx], asio::rf_task);
go RunEchoSession(std::move(socketes.c[idx]));
}
catch (std::exception & e)
@@ -143,7 +141,7 @@ future_t<> RunPipelineEchoClient(asio::io_service & ios, tcp::resolver::iterator
try
{
co_await asio::async_connect(*sptr, ep, rf_task);
co_await asio::async_connect(*sptr, ep, asio::rf_task);
GO
{
@@ -155,7 +153,7 @@ future_t<> RunPipelineEchoClient(asio::io_service & ios, tcp::resolver::iterator
{
for (;;)
{
co_await asio::async_write(*sptr, asio::buffer(write_buff_), rf_task);
co_await asio::async_write(*sptr, asio::buffer(write_buff_), asio::rf_task);
}
}
catch (std::exception & e)
@@ -171,7 +169,7 @@ future_t<> RunPipelineEchoClient(asio::io_service & ios, tcp::resolver::iterator
std::array<char, BUF_SIZE> read_buff_;
for (;;)
{
co_await sptr->async_read_some(asio::buffer(read_buff_), rf_task);
co_await sptr->async_read_some(asio::buffer(read_buff_), asio::rf_task);
}
}
catch (std::exception & e)
@@ -197,7 +195,7 @@ future_t<> RunPingPongEchoClient(asio::io_service & ios, tcp::resolver::iterator
try
{
co_await asio::async_connect(socket_, ep, rf_task);
co_await asio::async_connect(socket_, ep, asio::rf_task);
for (auto & c : write_buff_)
c = 'A' + rand() % 52;
@@ -205,8 +203,8 @@ future_t<> RunPingPongEchoClient(asio::io_service & ios, tcp::resolver::iterator
for (;;)
{
co_await when_all(
asio::async_write(socket_, asio::buffer(write_buff_), rf_task),
socket_.async_read_some(asio::buffer(read_buff_), rf_task)
asio::async_write(socket_, asio::buffer(write_buff_), asio::rf_task),
socket_.async_read_some(asio::buffer(read_buff_), asio::rf_task)
);
}
}

Loading…
Cancel
Save