// $Id$
//
// Copyright (C) 2007
-// Fraunhofer Institute for Open Communication Systems (FOKUS)
-// Competence Center NETwork research (NET), St. Augustin, GERMANY
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
// Thorsten Horstmann <tho@berlios.de>
//
// This program is free software; you can redistribute it and/or modify
/** \file
\brief DVBDemuxHandles public header */
-#ifndef HH_DVBDemuxHandles_
-#define HH_DVBDemuxHandles_ 1
+#ifndef HH_SENF_Socket_Protocols_DVB_DVBDemuxHandles_
+#define HH_SENF_Socket_Protocols_DVB_DVBDemuxHandles_ 1
// Custom includes
#include "../../../Socket/FramingPolicy.hh"
#include "../../../Socket/CommunicationPolicy.hh"
#include "../../../Socket/ReadWritePolicy.hh"
#include "../../../Socket/ProtocolClientSocketHandle.hh"
-#include "DVBDemuxProtocol.hh"
+#include "DVBDemuxSocketProtocol.hh"
//#include "DVBDemuxHandles.mpp"
+#include <boost/enable_shared_from_this.hpp>
+#include <boost/shared_ptr.hpp>
+#include <iostream>
///////////////////////////////hh.p////////////////////////////////////////
namespace senf {
NotWriteablePolicy
>::policy DVBDemux_Policy; ///< Socket Policy for xxxx
- /** \brief xxx
+ /** \brief Baseclass of various DVBProtocolWrappers which are defined in DVBProtocolWrapper.hh
*/
- class DVBDemuxSectionProtocol
- : public ConcreteSocketProtocol<DVBDemux_Policy, DVBDemuxSectionProtocol>,
- public DVBDemuxProtocol
+ class DVBProtocolWrapper :public boost::enable_shared_from_this<DVBProtocolWrapper> {
+ public:
+ DVBProtocolWrapper(){}
+ virtual ~DVBProtocolWrapper(){}
+ };
+ /** \brief Baseclass for DVBSocketProtocols which want use Wrappers for console.
+ */
+ class DVBSocketProtocol : public virtual SocketProtocol {
+private:
+ boost::shared_ptr<DVBProtocolWrapper> wrap_;
+public:
+ DVBSocketProtocol() {}
+ ~DVBSocketProtocol() {}
+
+ void addWrapper(boost::shared_ptr<DVBProtocolWrapper> wrap)/**< Binds a wrapper to a DVBProtocol,
+ so if it is closed the functionality of the wrapper is automatically removed from console.*/
+ {
+ wrap_ = wrap;
+ }
+ virtual void close(){
+ wrap_.reset();
+ SocketProtocol::close();
+
+ }
+ };
+
+
+ class DVBDemuxSectionSocketProtocol
+ : public ConcreteSocketProtocol<DVBDemux_Policy, DVBDemuxSectionSocketProtocol>,
+ public DVBDemuxSocketProtocol,
+ public DVBSocketProtocol
{
+
public:
///////////////////////////////////////////////////////////////////////////
// internal interface
///@}
- void setSectionFilter(struct dmx_sct_filter_params *filter) const;
+ void setSectionFilter(unsigned short int pid,
+ unsigned char filter= 0x3e,
+ unsigned int flags= DMX_IMMEDIATE_START | DMX_CHECK_CRC,
+ unsigned char mask = 0xff,
+ unsigned char mode =0x00,
+ unsigned int timeout =0x00) const;
+
};
- typedef ProtocolClientSocketHandle<DVBDemuxSectionProtocol> DVBDemuxSectionHandle;
+ typedef ProtocolClientSocketHandle<DVBDemuxSectionSocketProtocol> DVBDemuxSectionHandle;
// ----------------------------------------------------------------
/** \brief xxx
*/
- class DVBDemuxPESProtocol
- : public ConcreteSocketProtocol<DVBDemux_Policy,DVBDemuxPESProtocol>,
- public DVBDemuxProtocol
+ class DVBDemuxPESSocketProtocol
+ : public ConcreteSocketProtocol<DVBDemux_Policy,DVBDemuxPESSocketProtocol>,
+ public DVBDemuxSocketProtocol,
+ public DVBSocketProtocol
{
public:
///////////////////////////////////////////////////////////////////////////
///@}
- void setPESFilter(struct dmx_pes_filter_params *filter) const;
+ void setPESFilter(unsigned short int pid, dmx_input_t input, dmx_output_t output, dmx_pes_type_t pesType, unsigned int flags)const;
};
- typedef ProtocolClientSocketHandle<DVBDemuxPESProtocol> DVBDemuxPESHandle;
+ typedef ProtocolClientSocketHandle<DVBDemuxPESSocketProtocol> DVBDemuxPESHandle;
// ----------------------------------------------------------------
/** \brief xxx
*/
- class DVBDvrProtocol
- : public ConcreteSocketProtocol<DVBDemux_Policy, DVBDvrProtocol>,
- public DVBDemuxProtocol
+ class DVBDvrSocketProtocol
+ : public ConcreteSocketProtocol<DVBDemux_Policy, DVBDvrSocketProtocol>,
+ public DVBDemuxSocketProtocol
{
public:
///////////////////////////////////////////////////////////////////////////
///@}
};
- typedef ProtocolClientSocketHandle<DVBDvrProtocol> DVBDvrHandle;
+ typedef ProtocolClientSocketHandle<DVBDvrSocketProtocol> DVBDvrHandle;
///@}