summaryrefslogtreecommitdiff
path: root/src/fcgi_commission.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/fcgi_commission.cc')
-rw-r--r--src/fcgi_commission.cc44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/fcgi_commission.cc b/src/fcgi_commission.cc
new file mode 100644
index 0000000..bd082ff
--- /dev/null
+++ b/src/fcgi_commission.cc
@@ -0,0 +1,44 @@
+#include "fcgio.h"
+#include <iostream>
+
+int main(void) {
+ // Backup the stdio streambufs
+ streambuf * cin_streambuf = cin.rdbuf();
+ streambuf * cout_streambuf = cout.rdbuf();
+ streambuf * cerr_streambuf = cerr.rdbuf();
+
+ FCGX_Request request;
+
+ FCGX_Init();
+ FCGX_InitRequest(&request, 0, 0);
+
+ while (FCGX_Accept_r(&request) == 0) {
+ fcgi_streambuf cin_fcgi_streambuf(request.in);
+ fcgi_streambuf cout_fcgi_streambuf(request.out);
+ fcgi_streambuf cerr_fcgi_streambuf(request.err);
+
+ cin.rdbuf(&cin_fcgi_streambuf);
+ cout.rdbuf(&cout_fcgi_streambuf);
+ cerr.rdbuf(&cerr_fcgi_streambuf);
+
+ cout << "Content-type: text/html\r\n"
+ << "\r\n"
+ << "<html>\n"
+ << " <head>\n"
+ << " <title>Hello, World!</title>\n"
+ << " </head>\n"
+ << " <body>\n"
+ << " <h1>Hello, World!</h1>\n"
+ << " </body>\n"
+ << "</html>\n";
+
+ // Note: the fcgi_streambuf destructor will auto flush
+ }
+
+ // restore stdio streambufs
+ cin.rdbuf(cin_streambuf);
+ cout.rdbuf(cout_streambuf);
+ cerr.rdbuf(cerr_streambuf);
+
+ return 0;
+} \ No newline at end of file