5 #ifndef HH_StreamConnection_
6 #define HH_StreamConnection_ 1
9 #include <boost/utility.hpp>
10 #include <boost/intrusive_ptr.hpp>
12 #include "Utils/MicroTime.hh"
13 #include "Utils/intrusive_refcount.hh"
14 #include "Scheduler/Scheduler.hh"
15 #include "Socket/ClientSocketHandle.hh"
16 #include "Socket/CommunicationPolicy.hh"
17 #include "Socket/FramingPolicy.hh"
18 #include "Socket/ReadWritePolicy.hh"
20 //#include "StreamConnection.mpp"
21 ///////////////////////////////hh.p////////////////////////////////////////
26 class StreamConnection : public senf::intrusive_refcount
29 ///////////////////////////////////////////////////////////////////////////
32 typedef senf::ClientSocketHandle<
33 senf::MakeSocketPolicy<senf::ConnectedCommunicationPolicy,
34 senf::StreamFramingPolicy,
35 senf::WriteablePolicy>::policy> ClientHandle;
37 typedef boost::intrusive_ptr<StreamConnection> ptr;
38 typedef boost::function<void ()> Callback;
40 static const unsigned packetSize = 1400;
42 ///////////////////////////////////////////////////////////////////////////
43 ///\name Structors and default members
46 StreamConnection(int fileFd, unsigned bytesPerSecond, ClientHandle client,
47 unsigned bufferMSecs, Callback callback);
51 ///////////////////////////////////////////////////////////////////////////
59 void registerCallback();
60 void unregisterCallback();
61 void registerTimeout(unsigned timeout);
62 unsigned targetBytes();
65 void callback(ClientHandle client, senf::Scheduler::EventId);
70 unsigned bytesPerSecond_;
72 unsigned bufferMSecs_;
75 unsigned bytesWritten_;
76 senf::MicroTime start_;
78 char buffer_[packetSize];
84 ///////////////////////////////hh.e////////////////////////////////////////
85 #include "StreamConnection.cci"
86 //#include "StreamConnection.ct"
87 //#include "StreamConnection.cti"
88 //#include "StreamConnection.mpp"