Emacs/cc-ide: More robust function movement
[mediaserv.git] / Server / HTTPConnection.hh
1 // $Id$
2 //
3 // Copyright (C) 2006 
4
5 #ifndef HH_HTTPConnection_
6 #define HH_HTTPConnection_ 1
7
8 // Custom includes
9 #include <boost/utility.hpp>
10 #include <boost/intrusive_ptr.hpp>
11 #include <boost/scoped_ptr.hpp>
12 #include "Socket/ClientSocketHandle.hh"
13 #include "Utils/intrusive_refcount.hh"
14 #include "Scheduler/ReadHelper.hh"
15 #include "Scheduler/WriteHelper.hh"
16 #include "Socket/Protocols/INet/INetAddressing.hh"
17 #include "HTTPLogger.hh"
18 #include "HTTPRequest.hh"
19
20 //#include "HTTPConnection.mpp"
21 ///////////////////////////////hh.p////////////////////////////////////////
22
23 namespace g0dil {
24 namespace mediaserv {
25
26     class SimpleHTTPServer;
27     class StreamConnection;
28
29     class HTTPConnection
30         : public senf::intrusive_refcount
31     {
32     public:
33         ///////////////////////////////////////////////////////////////////////////
34         // Types
35
36         typedef boost::intrusive_ptr<HTTPConnection> ptr;
37         typedef senf::ClientSocketHandle<
38             senf::MakeSocketPolicy<senf::ConnectedCommunicationPolicy,
39                                           senf::StreamFramingPolicy,
40                                           senf::ReadablePolicy,
41                                           senf::WriteablePolicy,
42                                           senf::INet4AddressingPolicy
43                                    >::policy> ClientHandle;
44
45         static const unsigned MaxRequestSize = 16384;
46         static const unsigned StreamBufferMSecs = 4000;
47
48         ///////////////////////////////////////////////////////////////////////////
49         ///\name Structors and default members
50         ///@{
51
52         HTTPConnection(ClientHandle client, SimpleHTTPServer & server, HTTPLogger & logger);
53         ~HTTPConnection();
54
55         ///@}
56         ///////////////////////////////////////////////////////////////////////////
57
58         void done();
59
60     protected:
61
62     private:
63         void handleRequest(senf::ReadHelper<ClientHandle>::ptr);
64         void startStream(senf::WriteHelper<ClientHandle>::ptr);
65         
66         ClientHandle client_;
67         SimpleHTTPServer & server_;
68         HTTPLogger & logger_;
69         HTTPRequest request_;
70         boost::scoped_ptr<StreamConnection> connection_;
71         int fileFd_;
72         unsigned bandwidth_;
73     };
74
75 }}
76
77 ///////////////////////////////hh.e////////////////////////////////////////
78 //#include "HTTPConnection.cci"
79 //#include "HTTPConnection.ct"
80 //#include "HTTPConnection.cti"
81 //#include "HTTPConnection.mpp"
82 #endif
83
84 \f
85 // Local Variables:
86 // mode: c++
87 // End: