2019-04-28 00:17:32 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
2019-04-28 06:47:30 +00:00
|
|
|
#include <functional>
|
|
|
|
|
#include <unordered_map>
|
2019-04-30 02:07:48 +00:00
|
|
|
#include <unordered_set>
|
2019-04-28 06:47:30 +00:00
|
|
|
|
2019-04-28 17:50:44 +00:00
|
|
|
#include "stream_buffer.h"
|
2019-04-28 00:17:32 +00:00
|
|
|
|
|
|
|
|
struct sockaddr_in6;
|
2019-04-28 06:47:30 +00:00
|
|
|
class FastCGIRequest;
|
2019-04-28 00:17:32 +00:00
|
|
|
|
|
|
|
|
class FastCGIConn {
|
|
|
|
|
public:
|
2019-04-30 02:07:48 +00:00
|
|
|
FastCGIConn(int sock, const sockaddr_in6& client_addr, const std::function<void(std::unique_ptr<FastCGIRequest>)>& callback, const std::unordered_set<std::string_view>& headers);
|
2019-04-28 00:17:32 +00:00
|
|
|
~FastCGIConn();
|
|
|
|
|
|
2019-05-04 07:21:52 +00:00
|
|
|
[[nodiscard]] bool Read();
|
2019-04-29 00:11:07 +00:00
|
|
|
[[nodiscard]] bool Write(const std::vector<iovec>& vecs);
|
2019-04-28 06:47:30 +00:00
|
|
|
|
2019-05-04 07:21:52 +00:00
|
|
|
[[nodiscard]] int Sock();
|
|
|
|
|
|
2019-04-28 00:17:32 +00:00
|
|
|
private:
|
|
|
|
|
const int sock_;
|
2019-04-30 02:07:48 +00:00
|
|
|
const std::function<void(std::unique_ptr<FastCGIRequest>)>& callback_;
|
|
|
|
|
const std::unordered_set<std::string_view>& headers_;
|
2019-04-28 06:47:30 +00:00
|
|
|
|
2019-04-28 20:40:00 +00:00
|
|
|
uint64_t requests_ = 0;
|
|
|
|
|
|
2019-04-28 17:50:44 +00:00
|
|
|
StreamBuffer buf_;
|
2019-04-28 06:47:30 +00:00
|
|
|
|
|
|
|
|
std::unique_ptr<FastCGIRequest> request_;
|
2019-04-28 00:17:32 +00:00
|
|
|
};
|