diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2025-06-12 21:41:41 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2025-06-13 20:22:51 +0800 |
| commit | 6f7b994684032060f0a2d7af82f4f3572293b8d6 (patch) | |
| tree | 793d328cbcd6761365267550b55db45aee9b21fc /src/session.hpp | |
| parent | 6a51ab4525c59e9fe2bdbd92493019b0a98c6b94 (diff) | |
internal!: organized internal structure, using cmake now
Diffstat (limited to 'src/session.hpp')
| -rw-r--r-- | src/session.hpp | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/src/session.hpp b/src/session.hpp deleted file mode 100644 index 2ca274e..0000000 --- a/src/session.hpp +++ /dev/null @@ -1,88 +0,0 @@ -#pragma once - -#include "FileDescriptor.hpp" -#include "chatManager.hpp" -#include "format.hpp" -#include <format> -#include <memory> -#include <netinet/in.h> -#include <optional> -#include <string> -#include <sys/socket.h> -#include <thread> - -class CSession { - public: - CSession(); - ~CSession(); - - struct SRecvData { - std::string data; - const size_t size = 1024; - bool good = false; - - bool isEmpty() const; - void sanitize(); - - static constexpr char asciiEscape = 0x1B; // - }; - - const std::string &getName() const; - const std::string &getIp() const; - bool isAdmin() const; - - std::unique_ptr<SRecvData> read(); - std::unique_ptr<SRecvData> read(const std::string &msg, bool bypassDeaf = false); - bool write(const std::string &msg); - template <typename... Args> - bool write(std::format_string<Args...> fmt, Args &&...args); - template <typename... Args> - bool write(eFormatType type, std::format_string<Args...> fmt, Args &&...args); - bool writeChat(const CChatManager::SMessage &msg); - - bool isMuted() const; - void setMuted(bool mute); - bool isDeaf() const; - void setDeaf(bool deaf); - - void run(); - - bool isValid(); - - private: - constexpr static char m_adminIps[1][INET_ADDRSTRLEN] = {"127.0.0.1"}; - - enum eEventType : std::uint8_t { - READ, - WRITE - }; - - std::weak_ptr<CSession> self; - std::shared_ptr<CFileDescriptor> m_sockfd; - sockaddr_in m_addr; - socklen_t m_addrLen = sizeof(m_addr); - std::string m_name; - std::string m_ip; - int m_port; - bool m_isAdmin = false; - - std::optional<std::string> m_szReading = std::nullopt; - bool m_bMuted = false; - bool m_bDeaf = true; // init as true as we don't want anything during registerSession - - void recvLoop(); - bool registerSession(); - -#ifdef DEBUG - void onConnect(); - void onDisconnect(); -#endif - void onErrno(eEventType); -#ifdef DEBUG - void onRecv(const SRecvData &data); - void onSend(const std::string &msg); -#endif - - friend class CSessionManager; - friend void registerCommands(); -}; |
