memgraph/http/response.hpp

62 lines
1.0 KiB
C++
Raw Normal View History

2016-03-14 04:51:04 +08:00
#pragma once
#include <array>
#include "io/network/socket.hpp"
#include "memory/literals.hpp"
namespace http
{
using namespace memory::literals;
class Response
{
template <size_t capacity = 64_kB>
struct Buffer
{
public:
Buffer() = default;
size_t write(const char* data, size_t n)
{
::memcpy(buf + len, data, std::max(n, capacity - len));
}
char buf[capacity];
size_t len {0};
};
public:
Response(io::Socket& socket) : socket(socket) {}
Response& write(const char* data, size_t len)
{
/* while(true) */
/* { */
/* auto bytes_written = buffer.write(data, len); */
/* if(len - bytes_written == 0) */
/* break; */
/* len -= bytes_written, data += bytes_written; */
/* char* ptr = buffer.buf; */
/* socket.write(p */
/* } */
return *this;
}
private:
io::Socket& socket;
Buffer<64_kB> buffer;
/* void flush_socket() */
};
}