Re-arranged things
This commit is contained in:
parent
5757eb776c
commit
eaefd93096
@ -7,6 +7,7 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
#define HTTP_RECV_BUFFER_SIZE 8192
|
||||||
|
|
||||||
namespace fr
|
namespace fr
|
||||||
{
|
{
|
||||||
|
|||||||
@ -5,9 +5,7 @@
|
|||||||
#ifndef FRNETLIB_HTTPSOCKET_H
|
#ifndef FRNETLIB_HTTPSOCKET_H
|
||||||
#define FRNETLIB_HTTPSOCKET_H
|
#define FRNETLIB_HTTPSOCKET_H
|
||||||
|
|
||||||
#include "TcpSocket.h"
|
|
||||||
#include "Http.h"
|
#include "Http.h"
|
||||||
#include "SSLContext.h"
|
|
||||||
|
|
||||||
namespace fr
|
namespace fr
|
||||||
{
|
{
|
||||||
@ -15,28 +13,42 @@ namespace fr
|
|||||||
class HttpSocket : public SocketType
|
class HttpSocket : public SocketType
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//Constructor
|
HttpSocket()
|
||||||
HttpSocket();
|
: recv_buffer(HTTP_RECV_BUFFER_SIZE, '\0')
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//Forward constructor arguments to SocketType if needed
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
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);
|
|
||||||
|
|
||||||
/*!
|
Socket::Status receive(Http &request)
|
||||||
* Sends a HTTP request to the connected socket.
|
{
|
||||||
*
|
size_t received = 0;
|
||||||
* @param request The HTTP request to send.
|
do
|
||||||
* @return The status of the operation.
|
{
|
||||||
*/
|
//Receive the request
|
||||||
Socket::Status send(const Http &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:
|
private:
|
||||||
//Create buffer to receive_request the request
|
//Create buffer to receive_request the request
|
||||||
|
|||||||
@ -2,49 +2,9 @@
|
|||||||
// Created by fred on 10/12/16.
|
// Created by fred on 10/12/16.
|
||||||
//
|
//
|
||||||
|
|
||||||
#include <frnetlib/HttpResponse.h>
|
|
||||||
#include "frnetlib/HttpSocket.h"
|
#include "frnetlib/HttpSocket.h"
|
||||||
|
|
||||||
namespace fr
|
namespace fr
|
||||||
{
|
{
|
||||||
template<class SocketType>
|
|
||||||
HttpSocket<SocketType>::HttpSocket()
|
|
||||||
: recv_buffer(RECV_CHUNK_SIZE, '\0')
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class SocketType>
|
|
||||||
template<typename T>
|
|
||||||
HttpSocket<SocketType>::HttpSocket(T &&var)
|
|
||||||
: recv_buffer(RECV_CHUNK_SIZE, '\0'),
|
|
||||||
SocketType(var)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class SocketType>
|
|
||||||
Socket::Status HttpSocket<SocketType>::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<class SocketType>
|
|
||||||
Socket::Status HttpSocket<SocketType>::send(const Http &request)
|
|
||||||
{
|
|
||||||
std::string data = request.construct(SocketType::get_remote_address());
|
|
||||||
return SocketType::send_raw(&data[0], data.size());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user