X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FSocket%2FProtocols%2FDVB%2FDVBDemuxHandles.hh;fp=senf%2FSocket%2FProtocols%2FDVB%2FDVBDemuxHandles.hh;h=9b4b73a3852fa0b3763c196d85c18f2adf2e28f9;hb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;hp=0000000000000000000000000000000000000000;hpb=164fe477094d42463722584e527a02379ab5d985;p=senf.git diff --git a/senf/Socket/Protocols/DVB/DVBDemuxHandles.hh b/senf/Socket/Protocols/DVB/DVBDemuxHandles.hh new file mode 100644 index 0000000..9b4b73a --- /dev/null +++ b/senf/Socket/Protocols/DVB/DVBDemuxHandles.hh @@ -0,0 +1,207 @@ +// $Id$ +// +// Copyright (C) 2007 +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Thorsten Horstmann +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the +// Free Software Foundation, Inc., +// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +/** \file + \brief DVBDemuxHandles public header */ + +#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 "DVBDemuxSocketProtocol.hh" + +//#include "DVBDemuxHandles.mpp" +#include +#include +#include +///////////////////////////////hh.p//////////////////////////////////////// + +namespace senf { + + /// \addtogroup concrete_protocol_group + /// @{ + + typedef MakeSocketPolicy< + NoAddressingPolicy, + DatagramFramingPolicy, + UnconnectedCommunicationPolicy, + ReadablePolicy, + NotWriteablePolicy + >::policy DVBDemux_Policy; ///< Socket Policy for xxxx + + /** \brief Baseclass of various DVBProtocolWrappers which are defined in DVBProtocolWrapper.hh + */ + class DVBProtocolWrapper :public boost::enable_shared_from_this { + public: + DVBProtocolWrapper(){} + virtual ~DVBProtocolWrapper(){} + }; + /** \brief Baseclass for DVBSocketProtocols which want use Wrappers for console. + */ + class DVBSocketProtocol : public virtual SocketProtocol { +private: + boost::shared_ptr wrap_; +public: + DVBSocketProtocol() {} + ~DVBSocketProtocol() {} + + void addWrapper(boost::shared_ptr 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, + public DVBDemuxSocketProtocol, + public DVBSocketProtocol + { + + public: + /////////////////////////////////////////////////////////////////////////// + // internal interface + + ///\name Constructors + ///@{ + + void init_client(unsigned short adapter=0, unsigned short device=0) const; ///< xxx + /**< \note This member is implicitly called from the + ProtocolClientSocketHandle::ProtocolClientSocketHandle() + constructor */ + + ///@} + ///\name Abstract Interface Implementation + ///@{ + + unsigned available() 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 DVBDemuxSectionHandle; + + // ---------------------------------------------------------------- + + /** \brief xxx + */ + class DVBDemuxPESSocketProtocol + : public ConcreteSocketProtocol, + public DVBDemuxSocketProtocol, + public DVBSocketProtocol + { + public: + /////////////////////////////////////////////////////////////////////////// + // internal interface + + ///\name Constructors + ///@{ + + void init_client(unsigned short adapter=0, unsigned short device=0) const; ///< xxx + /**< \note This member is implicitly called from the + ProtocolClientSocketHandle::ProtocolClientSocketHandle() + constructor */ + + ///@} + ///\name Abstract Interface Implementation + ///@{ + + unsigned available() 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 DVBDemuxPESHandle; + + + // ---------------------------------------------------------------- + + + /** \brief xxx + */ + class DVBDvrSocketProtocol + : public ConcreteSocketProtocol, + public DVBDemuxSocketProtocol + { + public: + /////////////////////////////////////////////////////////////////////////// + // internal interface + + ///\name Constructors + ///@{ + + void init_client(unsigned short adapter=0, unsigned short device=0) const; ///< xxx + /**< \note This member is implicitly called from the + ProtocolClientSocketHandle::ProtocolClientSocketHandle() + constructor */ + + ///@} + ///\name Abstract Interface Implementation + ///@{ + + unsigned available() const; + + ///@} + }; + + typedef ProtocolClientSocketHandle DVBDvrHandle; + + ///@} + +} + +///////////////////////////////hh.e//////////////////////////////////////// +//#include "DVBDemuxHandles.cci" +//#include "DVBDemuxHandles.ct" +//#include "DVBDemuxHandles.cti" +#endif + + +// Local Variables: +// mode: c++ +// fill-column: 100 +// c-file-style: "senf" +// indent-tabs-mode: nil +// ispell-local-dictionary: "american" +// compile-command: "scons -u test" +// comment-column: 40 +// End: