Line data Source code
1 : //
2 : // Author: Vladimir Migashko <migashko@gmail.com>, (C) 2012
3 : //
4 : // Copyright: See COPYING file that comes with this distribution
5 : //
6 :
7 : #ifndef VSET_VSET_BUFFER_PERSISTENT_BUFFER_BASE_HPP
8 : #define VSET_VSET_BUFFER_PERSISTENT_BUFFER_BASE_HPP
9 :
10 : #include <vset/buffer/buffer_base.hpp>
11 : #include <vset/buffer/persistent/file/aspect.hpp>
12 : #include <vset/buffer/tags.hpp>
13 : #include <fas/aop.hpp>
14 :
15 : namespace vset { namespace buffer{
16 :
17 : template< typename A >
18 8 : class persistent_buffer_base
19 : : public buffer_base< A >
20 : {
21 : typedef buffer_base< A > super;
22 : public:
23 :
24 : typedef typename super::size_type size_type;
25 : typedef typename super::data_type data_type;
26 :
27 : template<typename T>
28 6 : void _close(T& t)
29 : {
30 6 : t.get_aspect().template gete< persistent::_before_close_ >()(t);
31 6 : t.get_aspect().template get< persistent::_close_>()(t);
32 6 : t.get_aspect().template gete< persistent::_after_close_ >()(t);
33 6 : }
34 :
35 : template<typename T>
36 8 : void _open(T& t, const char* path)
37 : {
38 8 : t.get_aspect().template gete< persistent::_before_open_ >()(t);
39 8 : t.get_aspect().template get<persistent::_open_>()(t, path);
40 8 : t.get_aspect().template gete< persistent::_after_open_ >()(t);
41 8 : }
42 :
43 : template<typename T>
44 2 : size_type _sync(T& t)
45 : {
46 2 : t.get_aspect().template gete< persistent::_before_sync_ >()(t);
47 2 : size_type result = t.get_aspect().template get<persistent::_sync_>()(t);
48 2 : t.get_aspect().template gete< persistent::_after_sync_>()(t, result);
49 2 : return result;
50 : }
51 :
52 : template<typename T>
53 : size_type _sync(T& t, size_type offset, size_type size )
54 : {
55 : t.get_aspect().template gete< persistent::_before_sync_ >()(t, offset, size);
56 : size_type result = t.get_aspect().template get<persistent::_sync_>()(t, offset, size);
57 : t.get_aspect().template gete< persistent::_after_sync_>()(t, result);
58 : return result;
59 : }
60 : };
61 :
62 : }}
63 :
64 : #endif
|