summaryrefslogtreecommitdiff
path: root/src/fcgi_commission.cpp
diff options
context:
space:
mode:
authorPatrick <Patrick.Murphy@multitech.com>2020-03-30 12:33:11 -0500
committerPatrick <Patrick.Murphy@multitech.com>2020-03-30 12:33:11 -0500
commit5b441749fb3525c54453b9fe8a0c2e5bb37cf53a (patch)
tree36aeceb528ae03b5613b9148ec5120ca6feeca2f /src/fcgi_commission.cpp
parent1a8133dc057302d1a026e177ec21f80df8d91f8e (diff)
downloadcommissioning-5b441749fb3525c54453b9fe8a0c2e5bb37cf53a.tar.gz
commissioning-5b441749fb3525c54453b9fe8a0c2e5bb37cf53a.tar.bz2
commissioning-5b441749fb3525c54453b9fe8a0c2e5bb37cf53a.zip
early experiments of integrating w/ yocto toolchain
Diffstat (limited to 'src/fcgi_commission.cpp')
-rw-r--r--src/fcgi_commission.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/fcgi_commission.cpp b/src/fcgi_commission.cpp
new file mode 100644
index 0000000..bd082ff
--- /dev/null
+++ b/src/fcgi_commission.cpp
@@ -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