blob: 3b7f6518433d09a1407eeaad4ff76e0e25f75c1b [file] [log] [blame]
#ifndef _SqLiteIMPL_HPP__
#define _SqLiteIMPL_HPP__
/*=========================================================================
* Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
* This product is protected by U.S. and international copyright
* and intellectual property laws. Pivotal products are covered by
* more patents listed at http://www.pivotal.io/patents.
*========================================================================
*/
#include "SqLiteHelper.hpp"
/**
* @file
*/
namespace gemfire {
/**
* @class SqLite(3.7) Implementation SqLiteImpl.hpp
* SqLite API for overflow.
* The SqLiteImpl class derives from PersistenceManager base class and implements a persistent store with SqLite DB.
*
*/
class SqLiteImpl : public PersistenceManager {
/**
* @brief public methods
*/
public:
/**
* Initializes the DB for the region. SqLite settings are passed via diskProperties argument.
* @throws InitfailedException if persistence directory/environment directory initialization fails.
*/
void init(const RegionPtr& regionptr, PropertiesPtr& diskProperties);
/**
* Stores a key-value pair in the SqLite implementation.
* @param key the key to write.
* @param value the value to write
* @throws DiskFailureException if the write fails due to disk failure.
*/
void write(const CacheableKeyPtr& key, const CacheablePtr& value, void *& dbHandle);
/**
* Writes the entire region into the SqLite implementation.
* @throws DiskFailureException if the write fails due to disk fail.
*/
bool writeAll();
/**
* Reads the value for the key from SqLite.
* @returns value of type CacheablePtr.
* @param key is the key for which the value has to be read.
* @throws IllegalArgumentException if the key is NULL.
* @throws DiskCorruptException if the data to be read is corrupt.
*/
CacheablePtr read(const CacheableKeyPtr& key, void *& dbHandle);
/**
* Read all the keys and values for a region stored in SqLite.
*/
bool readAll();
/**
* Invalidates an entry stored in SqLite.
* @throws IllegalArgumentException if the key is NULL.
* @throws RegionDestroyedException is the region is already destroyed.
* @throws EntryNotFoundException if the entry is not found on the disk.
*/
//void invalidate(const CacheableKeyPtr& key);
/**
* Destroys an entry stored in SqLite. .
* @throws IllegalArgumentException if the key is NULL.
* @throws RegionDestroyedException is the region is already destroyed.
* @throws EntryNotFoundException if the entry is not found on the disk.
*/
void destroy(const CacheableKeyPtr& key, void *& dbHandle);
/**
* Returns number of entries stored in SqLite for the region.
*/
// ARB: are we removing this method from PersistenceManager?
//int numEntries() const;
/**
* Destroys the region in the SqLite implementation.
* @throws RegionDestroyedException is the region is already destroyed.
*/
void destroyRegion();
/**
* Closes the SqLite persistence manager implementation.
* @throws ShutdownFailedException if clean-up of region and environment files fails..
*/
void close();
/**
* @brief destructor
*/
~SqLiteImpl() {
LOGDEBUG("SqLiteImpl::~SqLiteImpl calling ~SqLiteImpl");
}
/**
* @brief constructor
*/
SqLiteImpl();
/**
* @brief private members
*/
private:
SqLiteHelper *m_sqliteHelper;
RegionPtr m_regionPtr;
std::string m_regionDBFile;
std::string m_regionDir;
std::string m_persistanceDir;
};
}
#endif //_SqLiteIMPL_HPP__