d88f0b544b22d54a02968f775cc29259f16f23f0
[senf.git] / Socket / Protocols / DVB / DVBDemuxHandles.hh
1 // $Id$
2 //
3 // Copyright (C) 2007
4 // Fraunhofer Institute for Open Communication Systems (FOKUS) 
5 // Competence Center NETwork research (NET), St. Augustin, GERMANY 
6 //     Thorsten Horstmann <tho@berlios.de>
7 //
8 // This program is free software; you can redistribute it and/or modify
9 // it under the terms of the GNU General Public License as published by
10 // the Free Software Foundation; either version 2 of the License, or
11 // (at your option) any later version.
12 //
13 // This program is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 // GNU General Public License for more details.
17 //
18 // You should have received a copy of the GNU General Public License
19 // along with this program; if not, write to the
20 // Free Software Foundation, Inc.,
21 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22
23 /** \file
24     \brief DVBDemuxHandles public header */
25
26 #ifndef HH_DVBDemuxHandles_
27 #define HH_DVBDemuxHandles_ 1
28
29 // Custom includes
30 #include "../../../Socket/BufferingPolicy.hh"
31 #include "../../../Socket/FramingPolicy.hh"
32 #include "../../../Socket/CommunicationPolicy.hh"
33 #include "../../../Socket/ReadWritePolicy.hh"
34 #include "../../../Socket/ProtocolClientSocketHandle.hh"
35 #include "DVBDemuxProtocol.hh"
36
37 //#include "DVBDemuxHandles.mpp"
38 ///////////////////////////////hh.p////////////////////////////////////////
39
40 namespace senf {
41
42     /// \addtogroup concrete_protocol_group
43     /// @{
44
45     typedef MakeSocketPolicy<
46         NoAddressingPolicy,
47         DatagramFramingPolicy,
48         UnconnectedCommunicationPolicy,
49         ReadablePolicy,
50         NotWriteablePolicy,
51         NoBufferingPolicy
52         >::policy DVBDemux_Policy;   ///< Socket Policy for xxxx
53
54     /** \brief xxx
55      */
56     class DVBDemuxSectionProtocol
57         : public ConcreteSocketProtocol<DVBDemux_Policy>,
58           public DVBDemuxProtocol
59     {
60     public:
61         ///////////////////////////////////////////////////////////////////////////
62         // internal interface
63
64         ///\name Constructors
65         ///@{
66
67         void init_client(unsigned short adapter=0, unsigned short device=0) const;       ///< xxx
68                                         /**< \note This member is implicitly called from the
69                                              ProtocolClientSocketHandle::ProtocolClientSocketHandle()
70                                              constructor */
71
72         ///@}
73         ///\name Abstract Interface Implementation
74         ///@{
75         
76         unsigned available() const;
77
78         std::auto_ptr<SocketProtocol> clone() const;
79
80         ///@}
81         
82         void setSectionFilter(struct dmx_sct_filter_params *filter) const;    
83     };
84
85     typedef ProtocolClientSocketHandle<DVBDemuxSectionProtocol> DVBDemuxSectionHandle;
86     
87     // ----------------------------------------------------------------
88     
89     /** \brief xxx
90      */
91     class DVBDemuxPESProtocol
92         : public ConcreteSocketProtocol<DVBDemux_Policy>,
93           public DVBDemuxProtocol
94     {
95     public:
96         ///////////////////////////////////////////////////////////////////////////
97         // internal interface
98
99         ///\name Constructors
100         ///@{
101
102         void init_client(unsigned short adapter=0, unsigned short device=0) const;       ///< xxx
103                                         /**< \note This member is implicitly called from the
104                                              ProtocolClientSocketHandle::ProtocolClientSocketHandle()
105                                              constructor */
106
107         ///@}
108         ///\name Abstract Interface Implementation
109         ///@{
110         
111         unsigned available() const;
112
113         std::auto_ptr<SocketProtocol> clone() const;
114
115         ///@}
116         
117         void setPESFilter(struct dmx_pes_filter_params *filter) const;    
118     };
119
120     typedef ProtocolClientSocketHandle<DVBDemuxPESProtocol> DVBDemuxPESHandle;
121
122     
123     // ----------------------------------------------------------------
124     
125     
126     /** \brief xxx
127          */
128     class DVBDvrProtocol
129         : public ConcreteSocketProtocol<DVBDemux_Policy>,
130           public DVBDemuxProtocol
131     {
132     public:
133         ///////////////////////////////////////////////////////////////////////////
134         // internal interface
135
136         ///\name Constructors
137         ///@{
138
139         void init_client(unsigned short adapter=0, unsigned short device=0) const;       ///< xxx
140                                         /**< \note This member is implicitly called from the
141                                              ProtocolClientSocketHandle::ProtocolClientSocketHandle()
142                                              constructor */
143
144         ///@}
145         ///\name Abstract Interface Implementation
146         ///@{
147         
148         unsigned available() const;
149
150         std::auto_ptr<SocketProtocol> clone() const;
151         
152         ///@}
153      };
154
155      typedef ProtocolClientSocketHandle<DVBDvrProtocol> DVBDvrHandle;
156
157     ///@}
158     
159 }
160
161 ///////////////////////////////hh.e////////////////////////////////////////
162 //#include "DVBDemuxHandles.cci"
163 //#include "DVBDemuxHandles.ct"
164 //#include "DVBDemuxHandles.cti"
165 #endif
166
167 \f
168 // Local Variables:
169 // mode: c++
170 // fill-column: 100
171 // c-file-style: "senf"
172 // indent-tabs-mode: nil
173 // ispell-local-dictionary: "american"
174 // compile-command: "scons -u test"
175 // comment-column: 40
176 // End: