Webserv
Loading...
Searching...
No Matches
CGIHandler.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "http/Handler.hpp"
4#include <string>
5#include <vector>
6
7namespace http {
8
9class CGIHandler : public IHandler {
10public:
11 static std::string formatHeaderName(std::string const &name);
12
13 static void handle(Request const &, Response &, MimeTypes const &);
14
15private:
16 CGIHandler(Request const &req, Response &res);
17
18 void handle();
19 void buildArgv();
20 void buildEnvp();
21 bool initPipes();
22 void fork();
23 int execve();
24 void runChildProcess();
25 void runParentProcess();
26
27 Request const &req_;
29
30 std::vector<std::string> argv_;
31 std::vector<std::string> envp_;
32 int pipeFd_[2];
33 int errorFd_[2];
34 int pid_;
35};
36
37} // namespace http
void fork()
Definition CGIHandler.cpp:180
int pid_
Definition CGIHandler.hpp:34
int execve()
Definition CGIHandler.cpp:323
int pipeFd_[2]
Definition CGIHandler.hpp:32
std::vector< std::string > envp_
Definition CGIHandler.hpp:31
void handle()
Definition CGIHandler.cpp:105
bool initPipes()
Definition CGIHandler.cpp:166
Request const & req_
Definition CGIHandler.hpp:27
static std::string formatHeaderName(std::string const &name)
Definition CGIHandler.cpp:300
void runParentProcess()
Definition CGIHandler.cpp:152
void runChildProcess()
Definition CGIHandler.cpp:121
void buildArgv()
Definition CGIHandler.cpp:193
CGIHandler(Request const &req, Response &res)
Definition CGIHandler.cpp:50
int errorFd_[2]
Definition CGIHandler.hpp:33
std::vector< std::string > argv_
Definition CGIHandler.hpp:30
void buildEnvp()
Definition CGIHandler.cpp:247
Response & res_
Definition CGIHandler.hpp:28
Abstract interface for all request handlers (Strategy Pattern).
Definition Handler.hpp:15
Definition MimeTypes.hpp:11
Definition Request.hpp:66
A data container for an HTTP response, managed via a fluent API.
Definition Response.hpp:33
Definition IArgument.hpp:5