ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/Smersh/Daemon.hpp
Revision: 177
Committed: 2004-06-26T01:26:41-07:00 (20 years, 11 months ago) by Douglas Thrift
File size: 1297 byte(s)
Log Message:
z00t, need to make redirector and close sockets still!

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 172 #include "Person.hpp"
16    
17 Douglas Thrift 164 class Daemon
18     {
19     private:
20 Douglas Thrift 174 virtual int handle(api::TcpSocket* client);
21 Douglas Thrift 176 void headers(istream& sin, Environment& env);
22 Douglas Thrift 164 protected:
23 Douglas Thrift 175 enum Status { ok = 200, found = 302, seeOther, bad = 400, notFound = 404,
24 Douglas Thrift 176 lengthRequired = 411, mediaType = 415, serverError = 500,
25     notImplemented, version = 505 };
26     private:
27     Status message(istream& sin, Environment& env, ostream& post);
28 Douglas Thrift 177 string reason(Status status);
29 Douglas Thrift 176 protected:
30 Douglas Thrift 175 static string crlf;
31 Douglas Thrift 177 string log;
32     Daemon(const string& log) : log(log) {}
33 Douglas Thrift 173 void serve(int port, bool fork, Daemon* self);
34 Douglas Thrift 175 istream& getline(istream& sin, string& line) { ::getline(sin, line, '\r');
35     sin.get(); return sin; }
36     Status request(istream& sin, Environment& env, ostream& post, ostream& log);
37 Douglas Thrift 176 void response(ostream& sout, Status status);
38 Douglas Thrift 177 streamsize error(ostream& sout, Status status);
39 Douglas Thrift 176 string date(bool log = false);
40 Douglas Thrift 177 string ip(const api::TcpSocket& socket);
41 Douglas Thrift 164 public:
42 Douglas Thrift 177 Daemon(int port, bool fork, const string& log) : log(log) {
43     Person::configure(); serve(port, fork, this); }
44 Douglas Thrift 172 virtual ~Daemon() {}
45 Douglas Thrift 164 };
46    
47     #endif // _Daemon_hpp_

Properties

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