0a40fa34ea4b525f5771b8a41a4151b9b799bc7e
[mediaserv.git] / Server / Connection.hh
1 // $Id$
2 //
3 // Copyright (C) 2006 
4
5 #ifndef HH_Connection_
6 #define HH_Connection_ 1
7
8 // Custom includes
9 #include <boost/utility.hpp>
10 #include "Utils/MicroTime.hh"
11 #include "Scheduler/Scheduler.hh"
12 #include "Socket/ClientSocketHandle.hh"
13 #include "Socket/CommunicationPolicy.hh"
14 #include "Socket/FramingPolicy.hh"
15 #include "Socket/BufferingPolicy.hh"
16 #include "Socket/ReadWritePolicy.hh"
17
18 //#include "Connection.mpp"
19 ///////////////////////////////hh.p////////////////////////////////////////
20
21 namespace g0dil {
22 namespace mediaserv {
23
24     class Connection : boost::noncopyable
25     {
26     public:
27         ///////////////////////////////////////////////////////////////////////////
28         // Types
29
30         typedef satcom::lib::ClientSocketHandle<
31             satcom::lib::MakeSocketPolicy<satcom::lib::ConnectedCommunicationPolicy,
32                                           satcom::lib::StreamFramingPolicy,
33                                           satcom::lib::WriteablePolicy,
34                                           satcom::lib::SocketBufferingPolicy>::policy> ClientHandle;
35
36         static const unsigned packetSize = 1400;
37
38         ///////////////////////////////////////////////////////////////////////////
39         ///\name Structors and default members
40         ///@{
41
42         Connection(int fileFd, unsigned bytesPerSecond, ClientHandle client,
43                    unsigned bufferMSecs);
44
45         ///@}
46
47     protected:
48
49     private:
50         void registerCallback();
51         void unregisterCallback();
52         void registerTimeout(unsigned timeout);
53         unsigned targetBytes();
54         void fillBuffer();
55         
56         void callback(ClientHandle client, satcom::lib::Scheduler::EventId);
57         void timeout();
58         
59
60         int fileFd_;
61         unsigned bytesPerSecond_;
62         ClientHandle client_;
63         unsigned bufferMSecs_;
64
65         unsigned bytesWritten_;
66         satcom::lib::MicroTime start_;
67         unsigned bufferSize_;
68         char buffer_[packetSize];
69         bool terminate_;
70     };
71
72 }}
73
74 ///////////////////////////////hh.e////////////////////////////////////////
75 #include "Connection.cci"
76 //#include "Connection.ct"
77 //#include "Connection.cti"
78 //#include "Connection.mpp"
79 #endif
80
81 \f
82 // Local Variables:
83 // mode: c++
84 // End: