5 #ifndef HH_HTTPConnection_
6 #define HH_HTTPConnection_ 1
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"
20 //#include "HTTPConnection.mpp"
21 ///////////////////////////////hh.p////////////////////////////////////////
26 class SimpleHTTPServer;
27 class StreamConnection;
30 : public senf::intrusive_refcount
33 ///////////////////////////////////////////////////////////////////////////
36 typedef boost::intrusive_ptr<HTTPConnection> ptr;
37 typedef senf::ClientSocketHandle<
38 senf::MakeSocketPolicy<senf::ConnectedCommunicationPolicy,
39 senf::StreamFramingPolicy,
41 senf::WriteablePolicy,
42 senf::INet4AddressingPolicy
43 >::policy> ClientHandle;
45 static const unsigned MaxRequestSize = 16384;
46 static const unsigned StreamBufferMSecs = 4000;
48 ///////////////////////////////////////////////////////////////////////////
49 ///\name Structors and default members
52 HTTPConnection(ClientHandle client, SimpleHTTPServer & server, HTTPLogger & logger);
56 ///////////////////////////////////////////////////////////////////////////
63 void handleRequest(senf::ReadHelper<ClientHandle>::ptr);
64 void startStream(senf::WriteHelper<ClientHandle>::ptr);
67 SimpleHTTPServer & server_;
70 boost::scoped_ptr<StreamConnection> connection_;
77 ///////////////////////////////hh.e////////////////////////////////////////
78 //#include "HTTPConnection.cci"
79 //#include "HTTPConnection.ct"
80 //#include "HTTPConnection.cti"
81 //#include "HTTPConnection.mpp"