public
Description: Phusion Passenger (mod_rails)
Homepage: http://www.modrails.com/
Clone URL: git://github.com/FooBarWidget/passenger.git
Click here to lend your support to: passenger and make a donation at www.pledgie.com !
FooBarWidget (author)
Sun Feb 03 08:50:28 -0800 2008
commit  b39e6c012f6a10af78e61068b2367e74271fc975
tree    c9e66e833b564f3d0e47e565cc9e18a8a90631cf
parent  08b64503a7c50e84332abc4e7111ecaa3fff2f03
passenger / benchmark / DummyRequestHandler.cpp
100644 57 lines (50 sloc) 1.226 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include "MessageChannel.h"
#include "Utils.cpp"
#include <vector>
 
using namespace std;
using namespace Passenger;
 
static bool
handleRequest(MessageChannel &reader, MessageChannel &writer) {
  vector<string> headers;
 
  P_TRACE("Reading request headers");
  if (!reader.read(headers)) {
    return true;
  }
  P_TRACE("Done reading request headers");
  
  string content;
  content.reserve(1024 * 7);
  content += "<b>Using C++ DummyRequestHandler</b><br>\n";
  unsigned int i;
  for (i = 0; i < headers.size(); i += 2) {
    content += "<tt>";
    content += headers[i];
    content += " = ";
    content += headers[i + 1];
    content += "</tt><br>\n";
  }
  
  string header;
  header.reserve(512);
  header += "Status: 200 OK\r\n"
    "Content-Type: text/html\r\n"
    "Content-Length: ";
  header += toString(content.size());
  header += "\r\n\r\n";
  P_TRACE("Sending response header");
  writer.writeScalar(header);
  P_TRACE("Sending response content");
  writer.writeScalar(content);
  P_TRACE("All done");
  writer.writeScalar("", 0);
  return false;
}
 
int
main() {
  MessageChannel reader(STDIN_FILENO);
  MessageChannel writer(STDOUT_FILENO);
  bool done = false;
  initDebugging();
  while (!done) {
    done = handleRequest(reader, writer);
  }
  return 0;
}