mirror of
https://github.com/cpm-cmake/CPM.cmake.git
synced 2025-11-25 05:37:28 -05:00
Apply clang-format and cmake-format and add style check workflow (#171)
* apply clang-format and cmake-format and add style check workflow * add declare package definition * add additional public methods and rename internals * change development verison tag to 1.0.0 * rename internal method * rename public method * rename test var * update copyright and fix comment * typo * run fix-format * fix test function names
This commit is contained in:
@@ -12,44 +12,36 @@ CPMAddPackage(
|
||||
NAME asio
|
||||
VERSION 1.16.1
|
||||
GITHUB_REPOSITORY chriskohlhoff/asio
|
||||
GIT_TAG asio-1-16-1 # asio uses non-standard version tag, we must specify GIT_TAG
|
||||
GIT_TAG asio-1-16-1 # asio uses non-standard version tag, we must specify GIT_TAG
|
||||
)
|
||||
|
||||
# ASIO doesn't use CMake, we have to configure it manually.
|
||||
# Extra notes for using on Windows:
|
||||
# 1) If _WIN32_WINNT is not set, ASIO assumes _WIN32_WINNT=0x0501, i.e. Windows XP target,
|
||||
# which is definitely not the platform which most users target.
|
||||
# ASIO doesn't use CMake, we have to configure it manually. Extra notes for using on Windows:
|
||||
#
|
||||
# 1) If _WIN32_WINNT is not set, ASIO assumes _WIN32_WINNT=0x0501, i.e. Windows XP target, which is
|
||||
# definitely not the platform which most users target.
|
||||
#
|
||||
# 2) WIN32_LEAN_AND_MEAN is defined to make Winsock2 work.
|
||||
if(asio_ADDED)
|
||||
add_library(asio INTERFACE)
|
||||
|
||||
target_include_directories(asio
|
||||
INTERFACE ${asio_SOURCE_DIR}/asio/include
|
||||
)
|
||||
target_include_directories(asio INTERFACE ${asio_SOURCE_DIR}/asio/include)
|
||||
|
||||
target_compile_definitions(asio
|
||||
INTERFACE
|
||||
ASIO_STANDALONE
|
||||
ASIO_NO_DEPRECATED
|
||||
)
|
||||
target_compile_definitions(asio INTERFACE ASIO_STANDALONE ASIO_NO_DEPRECATED)
|
||||
|
||||
target_link_libraries(asio
|
||||
INTERFACE
|
||||
Threads::Threads
|
||||
)
|
||||
target_link_libraries(asio INTERFACE Threads::Threads)
|
||||
|
||||
if(WIN32)
|
||||
# macro see @ https://stackoverflow.com/a/40217291/1746503
|
||||
macro(get_win32_winnt version)
|
||||
if (CMAKE_SYSTEM_VERSION)
|
||||
if(CMAKE_SYSTEM_VERSION)
|
||||
set(ver ${CMAKE_SYSTEM_VERSION})
|
||||
string(REGEX MATCH "^([0-9]+).([0-9])" ver ${ver})
|
||||
string(REGEX MATCH "^([0-9]+)" verMajor ${ver})
|
||||
# Check for Windows 10, b/c we'll need to convert to hex 'A'.
|
||||
if ("${verMajor}" MATCHES "10")
|
||||
if("${verMajor}" MATCHES "10")
|
||||
set(verMajor "A")
|
||||
string(REGEX REPLACE "^([0-9]+)" ${verMajor} ver ${ver})
|
||||
endif ("${verMajor}" MATCHES "10")
|
||||
endif("${verMajor}" MATCHES "10")
|
||||
# Remove all remaining '.' characters.
|
||||
string(REPLACE "." "" ver ${ver})
|
||||
# Prepend each digit with a zero.
|
||||
@@ -65,11 +57,7 @@ if(asio_ADDED)
|
||||
|
||||
message(STATUS "Set _WIN32_WINNET=${_WIN32_WINNT}")
|
||||
|
||||
target_compile_definitions(asio
|
||||
INTERFACE
|
||||
_WIN32_WINNT=${_WIN32_WINNT}
|
||||
WIN32_LEAN_AND_MEAN
|
||||
)
|
||||
target_compile_definitions(asio INTERFACE _WIN32_WINNT=${_WIN32_WINNT} WIN32_LEAN_AND_MEAN)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
@@ -20,45 +20,31 @@
|
||||
|
||||
using asio::ip::tcp;
|
||||
|
||||
class session
|
||||
: public std::enable_shared_from_this<session>
|
||||
{
|
||||
class session : public std::enable_shared_from_this<session> {
|
||||
public:
|
||||
session(tcp::socket socket)
|
||||
: socket_(std::move(socket))
|
||||
{
|
||||
}
|
||||
session(tcp::socket socket) : socket_(std::move(socket)) {}
|
||||
|
||||
void start()
|
||||
{
|
||||
do_read();
|
||||
}
|
||||
void start() { do_read(); }
|
||||
|
||||
private:
|
||||
void do_read()
|
||||
{
|
||||
void do_read() {
|
||||
auto self(shared_from_this());
|
||||
socket_.async_read_some(asio::buffer(data_, max_length),
|
||||
[this, self](std::error_code ec, std::size_t length)
|
||||
{
|
||||
if (!ec)
|
||||
{
|
||||
do_write(length);
|
||||
}
|
||||
});
|
||||
[this, self](std::error_code ec, std::size_t length) {
|
||||
if (!ec) {
|
||||
do_write(length);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void do_write(std::size_t length)
|
||||
{
|
||||
void do_write(std::size_t length) {
|
||||
auto self(shared_from_this());
|
||||
asio::async_write(socket_, asio::buffer(data_, length),
|
||||
[this, self](std::error_code ec, std::size_t /*length*/)
|
||||
{
|
||||
if (!ec)
|
||||
{
|
||||
do_read();
|
||||
}
|
||||
});
|
||||
[this, self](std::error_code ec, std::size_t /*length*/) {
|
||||
if (!ec) {
|
||||
do_read();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
tcp::socket socket_;
|
||||
@@ -66,39 +52,30 @@ private:
|
||||
char data_[max_length];
|
||||
};
|
||||
|
||||
class server
|
||||
{
|
||||
class server {
|
||||
public:
|
||||
server(asio::io_context& io_context, short port)
|
||||
: acceptor_(io_context, tcp::endpoint(tcp::v4(), port))
|
||||
{
|
||||
: acceptor_(io_context, tcp::endpoint(tcp::v4(), port)) {
|
||||
do_accept();
|
||||
}
|
||||
|
||||
private:
|
||||
void do_accept()
|
||||
{
|
||||
acceptor_.async_accept(
|
||||
[this](std::error_code ec, tcp::socket socket)
|
||||
{
|
||||
if (!ec)
|
||||
{
|
||||
std::make_shared<session>(std::move(socket))->start();
|
||||
}
|
||||
void do_accept() {
|
||||
acceptor_.async_accept([this](std::error_code ec, tcp::socket socket) {
|
||||
if (!ec) {
|
||||
std::make_shared<session>(std::move(socket))->start();
|
||||
}
|
||||
|
||||
do_accept();
|
||||
});
|
||||
do_accept();
|
||||
});
|
||||
}
|
||||
|
||||
tcp::acceptor acceptor_;
|
||||
};
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
try
|
||||
{
|
||||
if (argc != 2)
|
||||
{
|
||||
int main(int argc, char* argv[]) {
|
||||
try {
|
||||
if (argc != 2) {
|
||||
std::cerr << "Usage: async_tcp_echo_server <port>\n";
|
||||
return 1;
|
||||
}
|
||||
@@ -108,9 +85,7 @@ int main(int argc, char* argv[])
|
||||
server s(io_context, std::atoi(argv[1]));
|
||||
|
||||
io_context.run();
|
||||
}
|
||||
catch (std::exception& e)
|
||||
{
|
||||
} catch (std::exception& e) {
|
||||
std::cerr << "Exception: " << e.what() << "\n";
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user