Finished version 0.1 of media server .. Jay !!!
[mediaserv.git] / Server / StreamConnection.hh
similarity index 64%
rename from Server/Connection.hh
rename to Server/StreamConnection.hh
index 0a40fa3..ba71fe6 100644 (file)
@@ -2,26 +2,28 @@
 //
 // Copyright (C) 2006 
 
-#ifndef HH_Connection_
-#define HH_Connection_ 1
+#ifndef HH_StreamConnection_
+#define HH_StreamConnection_ 1
 
 // Custom includes
 #include <boost/utility.hpp>
+#include <boost/intrusive_ptr.hpp>
+
 #include "Utils/MicroTime.hh"
+#include "Utils/intrusive_refcount.hh"
 #include "Scheduler/Scheduler.hh"
 #include "Socket/ClientSocketHandle.hh"
 #include "Socket/CommunicationPolicy.hh"
 #include "Socket/FramingPolicy.hh"
-#include "Socket/BufferingPolicy.hh"
 #include "Socket/ReadWritePolicy.hh"
 
-//#include "Connection.mpp"
+//#include "StreamConnection.mpp"
 ///////////////////////////////hh.p////////////////////////////////////////
 
 namespace g0dil {
 namespace mediaserv {
 
-    class Connection : boost::noncopyable
+    class StreamConnection : public satcom::lib::intrusive_refcount
     {
     public:
         ///////////////////////////////////////////////////////////////////////////
@@ -30,8 +32,10 @@ namespace mediaserv {
        typedef satcom::lib::ClientSocketHandle<
            satcom::lib::MakeSocketPolicy<satcom::lib::ConnectedCommunicationPolicy,
                                          satcom::lib::StreamFramingPolicy,
-                                         satcom::lib::WriteablePolicy,
-                                         satcom::lib::SocketBufferingPolicy>::policy> ClientHandle;
+                                         satcom::lib::WriteablePolicy>::policy> ClientHandle;
+
+       typedef boost::intrusive_ptr<StreamConnection> ptr;
+       typedef boost::function<void ()> Callback;
 
        static const unsigned packetSize = 1400;
 
@@ -39,10 +43,15 @@ namespace mediaserv {
         ///\name Structors and default members
         ///@{
 
-        Connection(int fileFd, unsigned bytesPerSecond, ClientHandle client,
-                  unsigned bufferMSecs);
+        StreamConnection(int fileFd, unsigned bytesPerSecond, ClientHandle client,
+                        unsigned bufferMSecs, Callback callback);
+        ~StreamConnection();
 
         ///@}
+        ///////////////////////////////////////////////////////////////////////////
+
+       void start();
+       unsigned bytesSent();
 
     protected:
 
@@ -61,6 +70,7 @@ namespace mediaserv {
        unsigned bytesPerSecond_;
        ClientHandle client_;
        unsigned bufferMSecs_;
+       Callback callback_;
 
        unsigned bytesWritten_;
        satcom::lib::MicroTime start_;
@@ -72,10 +82,10 @@ namespace mediaserv {
 }}
 
 ///////////////////////////////hh.e////////////////////////////////////////
-#include "Connection.cci"
-//#include "Connection.ct"
-//#include "Connection.cti"
-//#include "Connection.mpp"
+#include "StreamConnection.cci"
+//#include "StreamConnection.ct"
+//#include "StreamConnection.cti"
+//#include "StreamConnection.mpp"
 #endif
 
 \f