diff options
Diffstat (limited to 'server/src/client')
| -rw-r--r-- | server/src/client/client.cpp | 6 | ||||
| -rw-r--r-- | server/src/client/client.h | 25 |
2 files changed, 23 insertions, 8 deletions
diff --git a/server/src/client/client.cpp b/server/src/client/client.cpp index 75b25f2..1163ab5 100644 --- a/server/src/client/client.cpp +++ b/server/src/client/client.cpp @@ -5,13 +5,13 @@ bool tcp::client::init_ssl(SSL_CTX* server_ctx) { m_ssl = SSL_new(server_ctx); if (!m_ssl) { - io::logger->error("failed to create ssl on client {}.", m_ip); + io::logger->error("failed to create ssl on {}.", m_ip); return false; } int ret = SSL_set_fd(m_ssl, m_socket); if (ret <= 0) { - io::logger->error("failed to set descriptor on client {}.", m_ip); + io::logger->error("failed to set descriptor on {}.", m_ip); return false; } @@ -19,7 +19,7 @@ bool tcp::client::init_ssl(SSL_CTX* server_ctx) { if (ret <= 0) { int err = SSL_get_error(m_ssl, ret); - io::logger->error("client {} failed to accept ssl, return code {}", m_ip, + io::logger->error("{} failed to accept ssl, return code {}", m_ip, err); return false; } diff --git a/server/src/client/client.h b/server/src/client/client.h index 1dbb8d5..52e0c42 100644 --- a/server/src/client/client.h +++ b/server/src/client/client.h @@ -7,7 +7,7 @@ class client { int m_socket; SSL* m_ssl; - time_t m_time; + std::time_t m_time; std::string m_ip; std::string m_session_id; @@ -26,20 +26,35 @@ class client { SSL_free(m_ssl); } - int write(const void* data, size_t size) { - return SSL_write(m_ssl, data, size); - } + void reset() { std::time(&m_time); } + bool timeout() { return std::difftime(std::time(nullptr), m_time) >= 30; } int write(const packet_t& packet) { if (!packet) return 0; return write(packet.message.data(), packet.message.size()); } + int write(const void* data, size_t size) { + return SSL_write(m_ssl, data, size); + } + int read(void* data, size_t size) { return SSL_read(m_ssl, data, size); } - int stream(std::vector<char>& data, float *dur = nullptr); + int stream(std::vector<char>& data, float* dur = nullptr); int read_stream(std::vector<char>& out); + int stream(std::string &str) { + std::vector<char> vec(str.begin(), str.end()); + return stream(vec); + } + + int read_stream(std::string &str) { + std::vector<char> out; + int ret = read_stream(out); + str.assign(out.begin(), out.end()); + return ret; + } + void gen_session(); int get_socket() { return m_socket; } |