ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/Smersh/Daemon.hpp
Revision: 179
Committed: 2004-07-02T21:16:12-07:00 (20 years, 11 months ago) by Douglas Thrift
File size: 1416 byte(s)
Log Message:
Works now, uses menes-dbi for PostgreSQL.

File Contents

# User Rev Content
1 Douglas Thrift 164 // Smersh
2     //
3     // Douglas Thrift
4     //
5     // $Id$
6    
7     #ifndef _Daemon_hpp_
8     #define _Daemon_hpp_
9    
10 Douglas Thrift 172 #include <menes-api/socket.hpp>
11 Douglas Thrift 173 #include <menes-api/threads.hpp>
12 Douglas Thrift 174 #include <menes-etl/fnbind.hpp>
13     #include <menes-ios/stdadapters.hpp>
14 Douglas Thrift 164
15 Douglas Thrift 179 #include "Matcher.hpp"
16 Douglas Thrift 172 #include "Person.hpp"
17    
18 Douglas Thrift 164 class Daemon
19     {
20 Douglas Thrift 179 protected:
21     struct Client { api::TcpSocket socket; api::InternetAddress ip; Client() :
22     ip(api::InternetAddress::Any) {} };
23 Douglas Thrift 164 private:
24 Douglas Thrift 179 virtual int handle(Client* client);
25 Douglas Thrift 176 void headers(istream& sin, Environment& env);
26 Douglas Thrift 164 protected:
27 Douglas Thrift 175 enum Status { ok = 200, found = 302, seeOther, bad = 400, notFound = 404,
28 Douglas Thrift 176 lengthRequired = 411, mediaType = 415, serverError = 500,
29     notImplemented, version = 505 };
30     private:
31     Status message(istream& sin, Environment& env, ostream& post);
32 Douglas Thrift 177 string reason(Status status);
33 Douglas Thrift 176 protected:
34 Douglas Thrift 175 static string crlf;
35 Douglas Thrift 177 string log;
36     Daemon(const string& log) : log(log) {}
37 Douglas Thrift 173 void serve(int port, bool fork, Daemon* self);
38 Douglas Thrift 178 istream& getline(istream& sin, string& line) { std::getline(sin, line,
39     '\r'); sin.get(); return sin; }
40 Douglas Thrift 175 Status request(istream& sin, Environment& env, ostream& post, ostream& log);
41 Douglas Thrift 176 void response(ostream& sout, Status status);
42 Douglas Thrift 178 string server();
43 Douglas Thrift 177 streamsize error(ostream& sout, Status status);
44 Douglas Thrift 176 string date(bool log = false);
45 Douglas Thrift 164 public:
46 Douglas Thrift 177 Daemon(int port, bool fork, const string& log) : log(log) {
47     Person::configure(); serve(port, fork, this); }
48 Douglas Thrift 172 virtual ~Daemon() {}
49 Douglas Thrift 164 };
50    
51     #endif // _Daemon_hpp_

Properties

Name Value
svn:eol-style native
svn:keywords Id