Finished version 0.1 of media server .. Jay !!!
[mediaserv.git] / Server / SimpleHTTPServer.hh
1 // $Id$
2 //
3 // Copyright (C) 2006 
4
5 #ifndef HH_SimpleHTTPServer_
6 #define HH_SimpleHTTPServer_ 1
7
8 // Custom includes
9 #include <set>
10 #include <boost/utility.hpp>
11 #include "Socket/ServerSocketHandle.hh"
12 #include "Socket/CommunicationPolicy.hh"
13 #include "Socket/FramingPolicy.hh"
14 #include "Socket/ReadWritePolicy.hh"
15 #include "Scheduler/Scheduler.hh"
16
17 #include "HTTPLogger.hh"
18 #include "HTTPConnection.hh"
19
20 //#include "SimpleHTTPServer.mpp"
21 ///////////////////////////////hh.p////////////////////////////////////////
22
23 namespace g0dil {
24 namespace mediaserv {
25
26     class SimpleHTTPServer
27         : boost::noncopyable
28     {
29     public:
30         ///////////////////////////////////////////////////////////////////////////
31         // Types
32
33         typedef HTTPConnection::ClientHandle::ServerSocketHandle ServerHandle;
34
35         ///////////////////////////////////////////////////////////////////////////
36         ///\name Structors and default members
37         ///@{
38
39         SimpleHTTPServer(ServerHandle socket, HTTPLogger & logger);
40         ~SimpleHTTPServer();
41
42         static SimpleHTTPServer & instance();
43
44         ///@}
45         ///////////////////////////////////////////////////////////////////////////
46
47         void done(HTTPConnection::ptr connection);
48
49     protected:
50
51     private:
52         void newConnection(ServerHandle handle, satcom::lib::Scheduler::EventId event);
53
54         typedef std::set<HTTPConnection::ptr> Connections;
55
56         ServerHandle socket_;
57         HTTPLogger & logger_;
58         Connections connections_;
59
60         static SimpleHTTPServer * instance_;
61     };
62
63 }}
64
65 ///////////////////////////////hh.e////////////////////////////////////////
66 #include "SimpleHTTPServer.cci"
67 //#include "SimpleHTTPServer.ct"
68 //#include "SimpleHTTPServer.cti"
69 //#include "SimpleHTTPServer.mpp"
70 #endif
71
72 \f
73 // Local Variables:
74 // mode: c++
75 // End: