LCOV - code coverage report
Current view: top level - vset/buffer - persistent_buffer_base.hpp (source / functions) Hit Total Coverage
Test: v-set-coverage.info Lines: 16 16 100.0 %
Date: 2019-09-12 Functions: 10 10 100.0 %

          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

Generated by: LCOV version 1.10