blob: 8d35fe28311b615654427d6ce5fcb42d8e7ddfca (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
/*
* Copyright (C) 2007-2023 Xagasoft, All rights reserved.
*
* This file is part of the libbu++ library and is released under the
* terms of the license contained in the file LICENSE.
*/
#ifndef BU_DUAL_FILTER_H
#define BU_DUAL_FILTER_H
#include "bu/filter.h"
namespace Bu
{
template<typename Flt>
class DualFilter : public Bu::Filter
{
public:
DualFilter( Bu::Stream &rNext ) :
Bu::Filter( rNext ),
fRead( rNext ),
fWrite( rNext )
{
}
virtual ~DualFilter()
{
}
virtual void start()
{
fRead.start();
fWrite.start();
}
virtual Bu::size stop()
{
return fRead.stop() + fWrite.stop();
}
virtual void close()
{
Bu::Filter::close();
fRead.close();
fWrite.close();
}
virtual Bu::size read( void *pBuf, Bu::size iBytes )
{
return fRead.read( pBuf, iBytes );
}
virtual Bu::size write( void *pBuf, Bu::size iBytes )
{
return fWrite.write( pBuf, iBytes );
}
Flt &getReadFilter() { return fRead; }
Flt &getWriteFilter() { return fWrite; }
private:
Flt fRead;
Flt fWrite;
};
};
#endif
|