diff --git a/include/frnetlib/Http.h b/include/frnetlib/Http.h index daf7335..ddb5655 100644 --- a/include/frnetlib/Http.h +++ b/include/frnetlib/Http.h @@ -7,6 +7,7 @@ #include #include #include +#define HTTP_RECV_BUFFER_SIZE 8192 namespace fr { diff --git a/include/frnetlib/HttpSocket.h b/include/frnetlib/HttpSocket.h index 972c9ac..7b514ad 100644 --- a/include/frnetlib/HttpSocket.h +++ b/include/frnetlib/HttpSocket.h @@ -5,9 +5,7 @@ #ifndef FRNETLIB_HTTPSOCKET_H #define FRNETLIB_HTTPSOCKET_H -#include "TcpSocket.h" #include "Http.h" -#include "SSLContext.h" namespace fr { @@ -15,28 +13,42 @@ namespace fr class HttpSocket : public SocketType { public: - //Constructor - HttpSocket(); + HttpSocket() + : recv_buffer(HTTP_RECV_BUFFER_SIZE, '\0') + { + + } - //Forward constructor arguments to SocketType if needed template - HttpSocket(T &&var); + HttpSocket(T &&var) + : recv_buffer(HTTP_RECV_BUFFER_SIZE, '\0'), + SocketType(var) + { - /*! - * Receives a HTTP request from the connected socket - * - * @param request Where to store the received request. - * @return The status of the operation. - */ - Socket::Status receive(Http &request); + } - /*! - * Sends a HTTP request to the connected socket. - * - * @param request The HTTP request to send. - * @return The status of the operation. - */ - Socket::Status send(const Http &request); + Socket::Status receive(Http &request) + { + size_t received = 0; + do + { + //Receive the request + Socket::Status status = SocketType::receive_raw(&recv_buffer[0], recv_buffer.size(), received); + if(status != Socket::Success) + return status; + recv_buffer.resize(received); + + //Parse it + } while(request.parse(recv_buffer.substr(0, received))); + + return Socket::Success; + } + + Socket::Status send(const Http &request) + { + std::string data = request.construct(SocketType::get_remote_address()); + return SocketType::send_raw(&data[0], data.size()); + } private: //Create buffer to receive_request the request diff --git a/src/HttpSocket.cpp b/src/HttpSocket.cpp index 5c7978c..4a32dd2 100644 --- a/src/HttpSocket.cpp +++ b/src/HttpSocket.cpp @@ -2,49 +2,9 @@ // Created by fred on 10/12/16. // -#include #include "frnetlib/HttpSocket.h" namespace fr { - template - HttpSocket::HttpSocket() - : recv_buffer(RECV_CHUNK_SIZE, '\0') - { - } - - template - template - HttpSocket::HttpSocket(T &&var) - : recv_buffer(RECV_CHUNK_SIZE, '\0'), - SocketType(var) - { - - } - - template - Socket::Status HttpSocket::receive(Http &request) - { - size_t received = 0; - do - { - //Receive the request - Socket::Status status = SocketType::receive_raw(&recv_buffer[0], recv_buffer.size(), received); - if(status != Socket::Success) - return status; - recv_buffer.resize(received); - - //Parse it - } while(request.parse(recv_buffer.substr(0, received))); - - return Socket::Success; - } - - template - Socket::Status HttpSocket::send(const Http &request) - { - std::string data = request.construct(SocketType::get_remote_address()); - return SocketType::send_raw(&data[0], data.size()); - } } \ No newline at end of file