-rw-r--r-- | include/sitecing/sitecing_interface_cgi.h | 9 | ||||
-rw-r--r-- | lib/sitecing_interface_cgi.cc | 2 |
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 | ||
16 | namespace sitecing { | 17 | namespace 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 | } |