summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--include/sitecing/sitecing_interface_cgi.h9
-rw-r--r--lib/sitecing_interface_cgi.cc2
2 files changed, 4 insertions, 7 deletions
diff --git a/include/sitecing/sitecing_interface_cgi.h b/include/sitecing/sitecing_interface_cgi.h
index da538d6..d17cdb7 100644
--- a/include/sitecing/sitecing_interface_cgi.h
+++ b/include/sitecing/sitecing_interface_cgi.h
@@ -1,51 +1,48 @@
1#ifndef __SITECING_SITECING_INTERFACE_CGI_H 1#ifndef __SITECING_SITECING_INTERFACE_CGI_H
2#define __SITECING_SITECING_INTERFACE_CGI_H 2#define __SITECING_SITECING_INTERFACE_CGI_H
3 3
4#include <sstream> 4#include <sstream>
5#include <string> 5#include <string>
6#include <map> 6#include <map>
7#include "kingate/cgi_gateway.h" 7#include <kingate/cgi_gateway.h>
8#include <kingate/headers.h>
8#include "sitecing/sitecing_interface.h" 9#include "sitecing/sitecing_interface.h"
9#include "sitecing/sitespace.h" 10#include "sitecing/sitespace.h"
10 11
11/** 12/**
12 * @file 13 * @file
13 * @brief The sitecing_interface_cgi class declaration. 14 * @brief The sitecing_interface_cgi class declaration.
14 */ 15 */
15 16
16namespace sitecing { 17namespace sitecing {
17 using namespace std; 18 using namespace std;
18 19
19 /** 20 /**
20 * The interface to site-C-ing core for the CGI component. 21 * The interface to site-C-ing core for the CGI component.
21 */ 22 */
22 class sitecing_interface_cgi : public sitecing_interface { 23 class sitecing_interface_cgi : public sitecing_interface {
23 public: 24 public:
24 /** 25 /**
25 * Pointer to the CGI gateway interface. 26 * Pointer to the CGI gateway interface.
26 */ 27 */
27 kingate::cgi_gateway* cgigw; 28 kingate::cgi_gateway* cgigw;
28 /** 29 /**
29 * Type for the map of headers to spit out.
30 */
31 typedef map<string,string> headers_t;
32 /**
33 * The list of headers to spit out. 30 * The list of headers to spit out.
34 */ 31 */
35 headers_t headers; 32 kingate::headers headers;
36 /** 33 /**
37 * Here is where we prebuffer output. 34 * Here is where we prebuffer output.
38 */ 35 */
39 stringbuf prebuffer; 36 stringbuf prebuffer;
40 /** 37 /**
41 * Output stream, initially going to prebuffer. 38 * Output stream, initially going to prebuffer.
42 */ 39 */
43 ostream outs; 40 ostream outs;
44 /** 41 /**
45 * Have headers been sent yet? 42 * Have headers been sent yet?
46 */ 43 */
47 bool headers_flushed; 44 bool headers_flushed;
48 /** 45 /**
49 * Pointer to the sitespace object. 46 * Pointer to the sitespace object.
50 */ 47 */
51 sitespace *ss; // XXX: or does it belong to the generic interface? or should this 'generic' interface exist at all? 48 sitespace *ss; // XXX: or does it belong to the generic interface? or should this 'generic' interface exist at all?
diff --git a/lib/sitecing_interface_cgi.cc b/lib/sitecing_interface_cgi.cc
index f2bd093..59ae25a 100644
--- a/lib/sitecing_interface_cgi.cc
+++ b/lib/sitecing_interface_cgi.cc
@@ -29,23 +29,23 @@ namespace sitecing {
29 } 29 }
30 30
31 void sitecing_interface_cgi::set_buffering(bool do_buffer) { 31 void sitecing_interface_cgi::set_buffering(bool do_buffer) {
32 if(!do_buffer) 32 if(!do_buffer)
33 flush_headers(); 33 flush_headers();
34 outs.rdbuf(do_buffer?&prebuffer:cgigw->out().rdbuf()); 34 outs.rdbuf(do_buffer?&prebuffer:cgigw->out().rdbuf());
35 } 35 }
36 36
37 bool sitecing_interface_cgi::is_buffering() { 37 bool sitecing_interface_cgi::is_buffering() {
38 return outs.rdbuf()==&prebuffer; 38 return outs.rdbuf()==&prebuffer;
39 } 39 }
40 40
41 void sitecing_interface_cgi::flush_headers() { 41 void sitecing_interface_cgi::flush_headers() {
42 assert(cgigw); 42 assert(cgigw);
43 if(headers_flushed) 43 if(headers_flushed)
44 return; 44 return;
45 for(headers_t::const_iterator i=headers.begin();i!=headers.end();i++) 45 for(kingate::headers::const_iterator i=headers.begin();i!=headers.end();i++)
46 cgigw->out() << i->first << ": " << i->second << "\n"; 46 cgigw->out() << i->first << ": " << i->second << "\n";
47 cgigw->out() << "\n"; 47 cgigw->out() << "\n";
48 headers_flushed = true; 48 headers_flushed = true;
49 } 49 }
50 50
51} 51}