52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef CACHE_EMITTER_H
 | |
| #define CACHE_EMITTER_H
 | |
| 
 | |
| #include "persistent-data/block.h"
 | |
| 
 | |
| #include <boost/shared_ptr.hpp>
 | |
| #include <vector>
 | |
| 
 | |
| //----------------------------------------------------------------
 | |
| 
 | |
| namespace caching {
 | |
| 	namespace pd = persistent_data;
 | |
| 
 | |
| 	class emitter {
 | |
| 	public:
 | |
| 		typedef boost::shared_ptr<emitter> ptr;
 | |
| 
 | |
| 		virtual ~emitter() {}
 | |
| 
 | |
| 		virtual void begin_superblock(std::string const &uuid,
 | |
| 					      pd::block_address block_size,
 | |
| 					      pd::block_address nr_cache_blocks,
 | |
| 					      std::string const &policy,
 | |
| 					      size_t hint_width) = 0;
 | |
| 
 | |
| 		virtual void end_superblock() = 0;
 | |
| 
 | |
| 		virtual void begin_mappings() = 0;
 | |
| 		virtual void end_mappings() = 0;
 | |
| 
 | |
| 		virtual void mapping(pd::block_address cblock,
 | |
| 				     pd::block_address oblock,
 | |
| 				     bool dirty) = 0;
 | |
| 
 | |
| 		virtual void begin_hints() = 0;
 | |
| 		virtual void end_hints() = 0;
 | |
| 
 | |
| 		virtual void hint(pd::block_address cblock,
 | |
| 				  std::vector<unsigned char> const &data) = 0;
 | |
| 
 | |
| 		virtual void begin_discards() = 0;
 | |
| 		virtual void end_discards() = 0;
 | |
| 
 | |
| 		virtual void discard(pd::block_address dblock_begin,
 | |
| 				     pd::block_address dblock_end) = 0;
 | |
| 	};
 | |
| }
 | |
| 
 | |
| //----------------------------------------------------------------
 | |
| 
 | |
| #endif
 |