diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2025-03-05 14:03:58 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2025-03-05 17:33:49 +0800 |
| commit | 9210605f8e19ede6bac74e0ef860d8759db1c9f1 (patch) | |
| tree | 81d9fcddd7bfdec096b4ff2b81faa8a91f5dddc9 /src | |
| parent | 63867d0d1a21be521a0049cdc98e25c0af95f9f0 (diff) | |
session: dynamic onErrno
refactor: read(std::string)
Diffstat (limited to 'src')
| -rw-r--r-- | src/session.cpp | 37 | ||||
| -rw-r--r-- | src/session.hpp | 6 |
2 files changed, 19 insertions, 24 deletions
diff --git a/src/session.cpp b/src/session.cpp index e63d2ab..bfadb5d 100644 --- a/src/session.cpp +++ b/src/session.cpp @@ -1,6 +1,5 @@ #include "session.hpp" #include <cerrno> -#include <cmath> #include <cstring> #include <print> #include <sys/socket.h> @@ -23,8 +22,14 @@ void CSession::onDisconnect() const { std::println("Client disconnected"); } -void CSession::onErrno() const { - std::println("Error: {}", strerror(errno)); +void CSession::onErrno(eEventType eventType) const { + const auto err = strerror(errno); + switch (eventType) { + case READ: + std::println("Error while reading: {}", err); + case WRITE: + std::println("Error while writing: {}", err); + } } void CSession::onRecv(SRecvData &data) const { @@ -44,7 +49,7 @@ CSession::SRecvData CSession::read() { ssize_t dataSize = recv(m_sockfd.get(), recvData.data, recvData.dataSize, 0); if (dataSize < 0) { recvData.good = false; - onErrno(); + onErrno(READ); } if (dataSize == 0) { recvData.good = false; @@ -56,21 +61,7 @@ CSession::SRecvData CSession::read() { CSession::SRecvData CSession::read(std::string &msg) { write(msg); - SRecvData recvData; - ssize_t dataSize = recv(m_sockfd.get(), recvData.data, recvData.dataSize, 0); - - if (dataSize > 0) { - recvData.good = false; - - if (dataSize < 0) - onErrno(); - - if (dataSize == 0) - onDisconnect(); - } - onRecv(recvData); - - return recvData; + return read(); } void CSession::run() { @@ -96,11 +87,11 @@ bool CSession::isValid() const { } bool CSession::write(const std::string &msg) const { - bool bad = false; - ssize_t bytes_sent = send(m_sockfd.get(), msg.c_str(), msg.size(), 0); - if (bytes_sent < 0) { + bool bad = false; + ssize_t sentSize = send(m_sockfd.get(), msg.c_str(), msg.size(), 0); + if (sentSize < 0) { bad = true; - onErrno(); + onErrno(WRITE); } return bad; } diff --git a/src/session.hpp b/src/session.hpp index 2ecd74f..9dc3f0f 100644 --- a/src/session.hpp +++ b/src/session.hpp @@ -20,13 +20,17 @@ class CSession { void run(); private: + enum eEventType { + READ, + WRITE + }; Hyprutils::OS::CFileDescriptor m_sockfd; std::string m_name; void recvManager(); bool registerSession(); void onConnect() const; void onDisconnect() const; - void onErrno() const; + void onErrno(eEventType) const; void onRecv(SRecvData &data) const; friend class CSessionManager; }; |
