author | Michael Krelin <hacker@klever.net> | 2005-05-09 11:04:24 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2005-05-09 11:04:24 (UTC) |
commit | 01e3789f5b7c3b2c0282b70eb203d11c76d3c8f3 (patch) (unidiff) | |
tree | 580ebd4a1379c40cfbaa925849de2e42dd7cd441 /lib | |
parent | 981b219f5297ad2ccc1fc1d0e24e41ec009c35a3 (diff) | |
download | sitecing-01e3789f5b7c3b2c0282b70eb203d11c76d3c8f3.zip sitecing-01e3789f5b7c3b2c0282b70eb203d11c76d3c8f3.tar.gz sitecing-01e3789f5b7c3b2c0282b70eb203d11c76d3c8f3.tar.bz2 |
made use of kingate's headers container.
-rw-r--r-- | lib/sitecing_interface_cgi.cc | 2 |
1 files changed, 1 insertions, 1 deletions
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 | |||
@@ -1,51 +1,51 @@ | |||
1 | #include <cassert> | 1 | #include <cassert> |
2 | #include "sitecing/sitecing_interface_cgi.h" | 2 | #include "sitecing/sitecing_interface_cgi.h" |
3 | 3 | ||
4 | namespace sitecing { | 4 | namespace sitecing { |
5 | 5 | ||
6 | sitecing_interface_cgi::sitecing_interface_cgi(sitespace *s) | 6 | sitecing_interface_cgi::sitecing_interface_cgi(sitespace *s) |
7 | : outs(&prebuffer), sitecing_interface(&outs), ss(s), cgigw(NULL), headers_flushed(false) { | 7 | : outs(&prebuffer), sitecing_interface(&outs), ss(s), cgigw(NULL), headers_flushed(false) { |
8 | } | 8 | } |
9 | 9 | ||
10 | void sitecing_interface_cgi::prepare(kingate::cgi_gateway *cg) { | 10 | void sitecing_interface_cgi::prepare(kingate::cgi_gateway *cg) { |
11 | cgigw = cg; | 11 | cgigw = cg; |
12 | headers.clear(); | 12 | headers.clear(); |
13 | headers["Content-Type"] = "text/html"; | 13 | headers["Content-Type"] = "text/html"; |
14 | prebuffer.str(""); | 14 | prebuffer.str(""); |
15 | headers_flushed = false; | 15 | headers_flushed = false; |
16 | set_buffering(true); | 16 | set_buffering(true); |
17 | } | 17 | } |
18 | 18 | ||
19 | void sitecing_interface_cgi::flush(bool keep_buffering) { | 19 | void sitecing_interface_cgi::flush(bool keep_buffering) { |
20 | assert(cgigw); | 20 | assert(cgigw); |
21 | flush_headers(); | 21 | flush_headers(); |
22 | if(is_buffering()) { | 22 | if(is_buffering()) { |
23 | streampos count = prebuffer.pubseekoff(0,ios_base::cur,ios_base::out); | 23 | streampos count = prebuffer.pubseekoff(0,ios_base::cur,ios_base::out); |
24 | cgigw->out().write(prebuffer.str().c_str(),count); | 24 | cgigw->out().write(prebuffer.str().c_str(),count); |
25 | prebuffer.str(""); | 25 | prebuffer.str(""); |
26 | } | 26 | } |
27 | cgigw->out().flush(); | 27 | cgigw->out().flush(); |
28 | set_buffering(keep_buffering); | 28 | set_buffering(keep_buffering); |
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 | } |