From 8a6cada377edc54df835bc63dd83f5c8929ee1b1 Mon Sep 17 00:00:00 2001 From: chenxuan <1607772321@qq.com> Date: Sat, 12 Oct 2024 21:18:02 +0800 Subject: [PATCH] feat:rename file --- src/cppnet/server/tcp_server.cpp | 45 ++++++------------- src/cppnet/server/tcp_server.hpp | 6 ++- src/cppnet/socket/socket.cpp | 29 ++---------- src/cppnet/socket/socket.hpp | 7 ++- src/cppnet/ssl/ssl_context.hpp | 15 +++++++ .../utils/{threadpoll.hpp => threadpool.hpp} | 0 src/test/CMakeLists.txt | 3 ++ src/test/server/tcp_server_test.hpp | 1 + src/test/utils/threadpoll_test.hpp | 2 +- src/third_party/cpptest | 2 +- 10 files changed, 49 insertions(+), 61 deletions(-) create mode 100644 src/cppnet/ssl/ssl_context.hpp rename src/cppnet/utils/{threadpoll.hpp => threadpool.hpp} (100%) diff --git a/src/cppnet/server/tcp_server.cpp b/src/cppnet/server/tcp_server.cpp index 99429b1..395dcb8 100644 --- a/src/cppnet/server/tcp_server.cpp +++ b/src/cppnet/server/tcp_server.cpp @@ -1,7 +1,6 @@ #include "tcp_server.hpp" #include "../utils/const.hpp" #include "io_multiplexing/io_multiplexing_factory.hpp" -#include "utils/threadpoll.hpp" #include #include @@ -21,20 +20,20 @@ Socket TcpServer::CreateSocket() { Socket listenfd; auto rc = listenfd.Init(); if (rc < 0) { - err_msg_ = "[syserr]:" + std::string(strerror(errno)); + err_msg_ = "[syserr]:" + listenfd_.GetSysErr(); return kSysErr; } // set reuse addr to avoid time wait delay rc = listenfd.SetReuseAddr(); if (rc < 0) { - err_msg_ = "[syserr]:" + std::string(strerror(errno)); + err_msg_ = "[syserr]:" + listenfd_.GetSysErr(); return kSysErr; } rc = listenfd.Bind(addr_); if (rc < 0) { - err_msg_ = "[syserr]:" + std::string(strerror(errno)); + err_msg_ = "[syserr]:" + listenfd_.GetSysErr(); return kSysErr; } @@ -43,14 +42,6 @@ Socket TcpServer::CreateSocket() { void TcpServer::Register(EventCallBack cb) { event_callback_ = cb; } -int TcpServer::Listen(int fd) { - if (::listen(fd, max_connect_queue_) < 0) { - err_msg_ = "[syserr]:" + std::string(strerror(errno)); - return kSysErr; - } - return kSuccess; -} - int TcpServer::RemoveSoc(const Socket &soc) { return io_multiplexing_->RemoveSoc(soc); } @@ -64,7 +55,7 @@ void TcpServer::HandleAccept() { auto new_socket = listenfd_.Accept(addr); if (new_socket.status() != Socket::kInit) { - err_msg_ = "[syserr]:" + std::string(strerror(errno)); + err_msg_ = "[syserr]:" + new_socket.GetSysErr(); event_callback_(kEventError, *this, new_socket); return; } @@ -74,7 +65,7 @@ void TcpServer::HandleAccept() { case kIOMultiplexing: { auto rc = io_multiplexing_->MonitorSoc(new_socket); if (rc < 0) { - err_msg_ = "[syserr]:" + std::string(strerror(errno)); + err_msg_ = "[syserr]:" + io_multiplexing_->err_msg(); event_callback_(kEventError, *this, new_socket); new_socket.Close(); return; @@ -152,7 +143,7 @@ int TcpServer::EventLoop() { Address addr; auto accept_fd = listenfd_.Accept(addr); if (accept_fd.status() != Socket::kInit) { - err_msg_ = "[syserr]:" + std::string(strerror(errno)); + err_msg_ = "[syserr]:" + listenfd_.GetSysErr(); event_callback_(kEventError, *this, accept_fd); return kSysErr; } @@ -205,17 +196,17 @@ int TcpServer::WakeUp() { Socket soc; auto rc = soc.Init(); if (soc.status() != Socket::kInit) { - err_msg_ = "[syserr]:" + std::string(strerror(errno)); + err_msg_ = "[syserr]:" + soc.GetSysErr(); return kSysErr; } rc = soc.Connect(addr_); if (rc < 0) { - err_msg_ = "[syserr]:" + std::string(strerror(errno)); + err_msg_ = "[syserr]:" + soc.GetSysErr(); return kSysErr; } rc = soc.Close(); if (rc < 0) { - err_msg_ = "[syserr]:" + std::string(strerror(errno)); + err_msg_ = "[syserr]:" + soc.GetSysErr(); return kSysErr; } } break; @@ -230,26 +221,18 @@ int TcpServer::Init() { loop_flag_ = true; listenfd_ = CreateSocket(); if (listenfd_.status() != Socket::kInit) { - err_msg_ = "[syserr]:" + std::string(strerror(errno)); + err_msg_ = "[syserr]:" + listenfd_.GetSysErr(); return kSysErr; } auto retval = listenfd_.Listen(max_connect_queue_); if (retval < 0) { - err_msg_ = "[syserr]:" + std::string(strerror(errno)); - listenfd_.Close(); - return kSysErr; - } - - retval = InitMode(); - if (retval < 0) { - err_msg_ = "[syserr]:" + std::string(strerror(errno)); + err_msg_ = "[syserr]:" + listenfd_.GetSysErr(); listenfd_.Close(); return kSysErr; } - return kSuccess; - return kSuccess; + return InitMode(); } int TcpServer::InitMode() { @@ -265,14 +248,14 @@ int TcpServer::InitMode() { auto retval = io_multiplexing_->Init(); if (retval < 0) { - err_msg_ = io_multiplexing_->err_msg(); + err_msg_ = "[syserr]:" + io_multiplexing_->err_msg(); listenfd_.Close(); return kSysErr; } retval = io_multiplexing_->MonitorSoc(listenfd_); if (retval < 0) { - err_msg_ = io_multiplexing_->err_msg(); + err_msg_ = "[syserr]:" + io_multiplexing_->err_msg(); listenfd_.Close(); return kSysErr; } diff --git a/src/cppnet/server/tcp_server.hpp b/src/cppnet/server/tcp_server.hpp index a6f5db2..af1d340 100644 --- a/src/cppnet/server/tcp_server.hpp +++ b/src/cppnet/server/tcp_server.hpp @@ -1,7 +1,7 @@ #pragma once #include "../socket/socket.hpp" -#include "../utils/threadpoll.hpp" +#include "../utils/threadpool.hpp" #include "io_multiplexing/io_multiplexing_base.hpp" #include #include @@ -71,6 +71,9 @@ class TcpServer { int WakeUp(); public: + /** + * @brief: Set server mode.Need to be called before Init. + */ inline void set_mode(Mode mode) { mode_ = mode; } inline void set_max_connect_queue(int max_connect_queue) { max_connect_queue_ = max_connect_queue; @@ -86,7 +89,6 @@ class TcpServer { protected: Socket CreateSocket(); int InitMode(); - int Listen(int fd); void HandleAccept(); void HandleRead(int fd); diff --git a/src/cppnet/socket/socket.cpp b/src/cppnet/socket/socket.cpp index 1ed42d6..c30b3cf 100644 --- a/src/cppnet/socket/socket.cpp +++ b/src/cppnet/socket/socket.cpp @@ -89,20 +89,7 @@ int Socket::Read(std::string &buf, size_t len, bool complete) const { } char *data = new char[len + 1]; memset(data, 0, len + 1); - auto recv_len = 0; - - if (complete) { - while (recv_len < len) { - auto rc = ::read(fd_, data + recv_len, len - recv_len); - if (rc <= 0) { - break; - } - recv_len += rc; - } - } else { - recv_len = ::read(fd_, data, len); - } - + auto recv_len = Read(data, len, complete); buf = data; delete[] data; return recv_len; @@ -134,8 +121,7 @@ int Socket::ReadUdp(std::string &buf, size_t len, Address &addr) const { int addr_len = sizeof(sockaddr); char *data = new char[len + 1]; memset(data, 0, len + 1); - auto rc = - ::recvfrom(fd_, data, len, 0, addr.GetSockAddr(), (socklen_t *)&addr_len); + auto rc = ReadUdp(data, len, addr); buf = data; delete[] data; return rc; @@ -151,10 +137,7 @@ int Socket::ReadUdp(void *buf, size_t len, Address &addr) const { } int Socket::Write(const std::string &buf) const { - if (status_ != kInit) { - return -1; - } - return ::write(fd_, buf.c_str(), buf.size()); + return Write(buf.c_str(), buf.size()); } int Socket::Write(const void *buf, size_t len) const { @@ -165,11 +148,7 @@ int Socket::Write(const void *buf, size_t len) const { } int Socket::WriteUdp(const std::string &buf, Address &addr) const { - if (status_ != kInit) { - return -1; - } - return ::sendto(fd_, buf.c_str(), buf.size(), 0, addr.GetSockAddr(), - sizeof(sockaddr)); + return WriteUdp(buf.c_str(), buf.size(), addr); } int Socket::WriteUdp(const void *buf, size_t len, Address &addr) const { diff --git a/src/cppnet/socket/socket.hpp b/src/cppnet/socket/socket.hpp index 9341f62..ebd81b9 100644 --- a/src/cppnet/socket/socket.hpp +++ b/src/cppnet/socket/socket.hpp @@ -3,6 +3,7 @@ #include "address.hpp" #include #include + namespace cppnet { class Socket { @@ -10,7 +11,7 @@ class Socket { enum Status { kUninit = 0, kInit = 1, - kClosed = 3, + kClosed = 2, }; public: @@ -130,6 +131,10 @@ class Socket { * @brief: get addr from socket */ int GetAddr(Address &addr) const; + /** + * @brief: get system error string + */ + static inline std::string GetSysErr() { return strerror(errno); } public: inline int fd() const { return fd_; } diff --git a/src/cppnet/ssl/ssl_context.hpp b/src/cppnet/ssl/ssl_context.hpp new file mode 100644 index 0000000..28ced89 --- /dev/null +++ b/src/cppnet/ssl/ssl_context.hpp @@ -0,0 +1,15 @@ +#pragma once +#ifdef CPPNET_OPENSSL +#include + +namespace cppnet { + +class SSLContext { +public: +private: + SSL_CTX *ssl_ctx_; +}; + +#endif + +} // namespace cppnet diff --git a/src/cppnet/utils/threadpoll.hpp b/src/cppnet/utils/threadpool.hpp similarity index 100% rename from src/cppnet/utils/threadpoll.hpp rename to src/cppnet/utils/threadpool.hpp diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt index 10df655..e142512 100644 --- a/src/test/CMakeLists.txt +++ b/src/test/CMakeLists.txt @@ -10,6 +10,9 @@ set(CMAKE_CXX_STANDARD 17) include_directories(../cppnet) include_directories(../third_party/cpptest) +# include_directories(/opt/homebrew/Cellar/openssl@3/3.3.2/include) +# add_definitions(-DCPPNET_OPENSSL) + # link dir add # link_directories() diff --git a/src/test/server/tcp_server_test.hpp b/src/test/server/tcp_server_test.hpp index a2f7dfb..48db01f 100644 --- a/src/test/server/tcp_server_test.hpp +++ b/src/test/server/tcp_server_test.hpp @@ -217,6 +217,7 @@ TEST(TcpServer, MultiThread) { // write rc = fd.Write(msg); MUST_TRUE(rc == msg.size(), strerror(errno)); + DEBUG(fd.fd() << " write " << msg); // close rc = fd.Close(); diff --git a/src/test/utils/threadpoll_test.hpp b/src/test/utils/threadpoll_test.hpp index 141c23c..656f996 100644 --- a/src/test/utils/threadpoll_test.hpp +++ b/src/test/utils/threadpoll_test.hpp @@ -1,5 +1,5 @@ #include "test.h" -#include "utils/threadpoll.hpp" +#include "utils/threadpool.hpp" #include #include diff --git a/src/third_party/cpptest b/src/third_party/cpptest index dc74c37..b61c713 160000 --- a/src/third_party/cpptest +++ b/src/third_party/cpptest @@ -1 +1 @@ -Subproject commit dc74c378d85bb6a7048ef2e3bac969d9157247ad +Subproject commit b61c713657bcc07e04ac4be66b71c071473d01ad