svn:keywords property set
[senf.git] / Socket / DVBDemuxHandles.hh
1 // $Id$
2 //
3 // Copyright (C) 2007
4 // Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
5 // Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
6 //     Stefan Bund <stefan.bund@fokus.fraunhofer.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 DVBHandles
25  */
26
27 #ifndef HH_DVBDemuxHandles_
28 #define HH_DVBDemuxHandles_ 1
29
30 // Custom includes
31 #include "FramingPolicy.hh"
32 #include "CommunicationPolicy.hh"
33 #include "ReadWritePolicy.hh"
34 #include "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         >::policy DVBDemux_Policy;   ///< Socket Policy for xxxx
52
53     /** \brief xxx
54      */
55     class DVBDemuxSectionProtocol
56         : public ConcreteSocketProtocol<DVBDemux_Policy>,
57           public DVBDemuxProtocol
58     {
59     public:
60         ///////////////////////////////////////////////////////////////////////////
61         // internal interface
62
63         ///\name Constructors
64         ///@{
65
66         void init_client() const;       ///< xxx
67                                         /**< \note This member is implicitly called from the
68                                              ProtocolClientSocketHandle::ProtocolClientSocketHandle()
69                                              constructor */
70
71         ///@}
72         ///\name Abstract Interface Implementation
73         
74         unsigned available() const;
75
76         std::auto_ptr<SocketProtocol> clone() const;
77
78         ///@}
79         
80         void setSectionFilter(struct dmx_sct_filter_params *filter) const;    
81     };
82
83     typedef ProtocolClientSocketHandle<DVBDemuxSectionProtocol> DVBDemuxSectionHandle;
84     
85     // ----------------------------------------------------------------
86     
87     /** \brief xxx
88      */
89     class DVBDemuxPESProtocol
90         : public ConcreteSocketProtocol<DVBDemux_Policy>,
91           public DVBDemuxProtocol
92     {
93     public:
94         ///////////////////////////////////////////////////////////////////////////
95         // internal interface
96
97         ///\name Constructors
98         ///@{
99
100         void init_client() const;       ///< xxx
101                                         /**< \note This member is implicitly called from the
102                                              ProtocolClientSocketHandle::ProtocolClientSocketHandle()
103                                              constructor */
104
105         ///@}
106         ///\name Abstract Interface Implementation
107         
108         unsigned available() const;
109
110         std::auto_ptr<SocketProtocol> clone() const;
111
112         ///@}
113         
114         void setPESFilter(struct dmx_pes_filter_params *filter) const;    
115     };
116
117     typedef ProtocolClientSocketHandle<DVBDemuxPESProtocol> DVBDemuxPESHandle;
118
119     
120     // ----------------------------------------------------------------
121     
122     
123     /** \brief xxx
124          */
125     class DVBDvrProtocol
126         : public ConcreteSocketProtocol<DVBDemux_Policy>,
127           public DVBDemuxProtocol
128     {
129     public:
130         ///////////////////////////////////////////////////////////////////////////
131         // internal interface
132
133         ///\name Constructors
134         ///@{
135
136         void init_client() const;       ///< xxx
137                                         /**< \note This member is implicitly called from the
138                                              ProtocolClientSocketHandle::ProtocolClientSocketHandle()
139                                              constructor */
140
141         ///@}
142         ///\name Abstract Interface Implementation
143         
144         unsigned available() const;
145
146         std::auto_ptr<SocketProtocol> clone() const;
147
148         ///@}
149    
150      };
151
152      typedef ProtocolClientSocketHandle<DVBDvrProtocol> DVBDvrHandle;
153     
154 }
155
156 ///////////////////////////////hh.e////////////////////////////////////////
157 //#include "DVBDemuxHandles.cci"
158 //#include "DVBDemuxHandles.ct"
159 //#include "DVBDemuxHandles.cti"
160 #endif
161
162 \f
163 // Local Variables:
164 // mode: c++
165 // fill-column: 100
166 // c-file-style: "senf"
167 // indent-tabs-mode: nil
168 // ispell-local-dictionary: "american"
169 // compile-command: "scons -u test"
170 // comment-column: 40
171 // End: