From 0d8b0e76368a87a695a301a04e80617aeda78228 Mon Sep 17 00:00:00 2001 From: 3lswear Date: Sun, 30 Jan 2022 15:26:01 +0300 Subject: [PATCH] feat: add recvCounter, allRecved --- src/Client/Client.cpp | 32 +++++++++++++++++++++++++++++++- src/Client/Client.hpp | 4 ++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/Client/Client.cpp b/src/Client/Client.cpp index af1e0b9..5fe9c94 100644 --- a/src/Client/Client.cpp +++ b/src/Client/Client.cpp @@ -5,6 +5,7 @@ Client::Client() { allRead = false; + _received = 0; this->_fd = -1; this->_sended = 0; } @@ -12,6 +13,7 @@ Client::Client() Client::Client(char *str) { allRead = false; + _received = 0; this->_fd = -1; this->_buff = str; this->_sended = 0; @@ -21,6 +23,7 @@ Client::Client(char *str) Client::Client(char *str, ServerConfig *config) { allRead = false; + _received = 0; this->_fd = -1; this->_config = config; this->_buff = str; @@ -55,6 +58,11 @@ unsigned int Client::getCounter(void) const return _sended; } +unsigned int Client::getRecvCounter(void) const +{ + return _received; +} + void Client::setRawData(char *str) { this->_buff = str; @@ -96,11 +104,33 @@ bool Client::allSended(void) return (true); return (false); } + +bool Client::allRecved(void) +{ + if (_request.getContentLength() == _received) + { + std::cout << "contentLength, _received " + << _request.getContentLength() + << " " << + _received << std::endl; + return (true); + } + else + return (false); +} // Функция увеличивает счетчик на количество BUFFERSIZE. Счетчик - количество байтов отправленных клиенту. void Client::increaseCounter(void) { _sended += BUFFSIZE; } + +void Client::increaseRecvCounter(unsigned int n) +{ + if (_received == 0) + _received -= _request.getHeaderSize(); + _received += n; +} + //Генерирует response. Далее респонс можно получить через функцию getStrToSend() int Client::sendResponse(int fd) { @@ -153,7 +183,7 @@ void Client::printClientInfo(void) std::cout << PINK << it->first << BLUE << it->second << ZERO_C << std::endl; } std::cout << TURGUOISE << "Client BODY" << ZERO_C << std::endl; - std::cout << BLUE << _request.getBody().size() << ZERO_C << std::endl; + std::cout << GREEN << _request.getBody().size() << ZERO_C << std::endl; /* std::cout << BLUE << _request.getBody() << ZERO_C << std::endl; */ } diff --git a/src/Client/Client.hpp b/src/Client/Client.hpp index 6c74706..fcc290f 100644 --- a/src/Client/Client.hpp +++ b/src/Client/Client.hpp @@ -18,6 +18,7 @@ private: int _ret; int _fd; unsigned int _sended; + unsigned int _received; char *_buff; @@ -37,6 +38,7 @@ public: void setRawData(char *); void setFd(int); int getFd(void); + unsigned int getRecvCounter(void) const; public: @@ -46,11 +48,13 @@ public: bool readyToSend(void); bool allSended(void); + bool allRecved(void); bool isChunked(void); int sendResponse(int fd); int sendData(int , std::string data); void clear(void); void increaseCounter(void); + void increaseRecvCounter(unsigned int n); std::string generateRespons(void); Client();