You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.4 KiB
C++

/**
* @file
* @brief
*
* @author Thomas Escher
*/
#ifndef TEMPORARY_HANDLER_H
#define TEMPORARY_HANDLER_H
#include "scanserver/cache/cacheHandler.h"
#include "scanserver/sharedScan.h"
#include "scanserver/cacheIO.h"
/**
* @brief CacheHandler for artificially created CacheObjects by reduction in SharedScan.
*
* This handler saves and loads the contents of a CacheObject with arbitrary contents via CacheIO.
*/
class TemporaryHandler : public CacheHandler
{
public:
/**
* Constructor
* @param static_data determines overwriting policy. Set false for changing data, true for static write-only-once data.
*/
TemporaryHandler(CacheObject* obj, CacheManager* cm, SharedScan* scan, bool static_data = false);
/**
* Deserialize data from a file if it exists and written flag is set, otherwise does nothing
* @return whether written flag was set and file was found and loaded
*/
virtual bool load();
/**
* Serialize all data into a file
* It will do so if either the written flag isn't set, or static data flag isn't set regardless of the written flag.
*/
virtual void save(unsigned char* data, unsigned int size);
//! Reset flag for having a cached file, causing reads to fail and saves to overwrite older files.
virtual void invalidate() { m_written = false; }
protected:
SharedScan* m_scan;
private:
CacheIO::IDType m_id;
bool m_written, m_static_data;
};
#endif //TEMPORARY_HANDLER_H