147 lines
4.3 KiB
C
147 lines
4.3 KiB
C
|
/**
|
||
|
* \file LSMPersistentStoreImpl.h
|
||
|
* \brief This file is a wrapper over the LSM-Tree network protocol.
|
||
|
*
|
||
|
* Copyright (c) 2008 Yahoo, Inc.
|
||
|
* All rights reserved.
|
||
|
*/
|
||
|
|
||
|
#ifndef LSM_PSTORE_IMPL_H
|
||
|
#define LSM_PSTORE_IMPL_H
|
||
|
|
||
|
#include "PersistentStore.h"
|
||
|
//#include "LSMCoreImpl.h"
|
||
|
|
||
|
struct logstore_handle_t;
|
||
|
|
||
|
class LSMPersistentStoreImpl : public PersistentStore
|
||
|
{
|
||
|
|
||
|
private:
|
||
|
// LSMCoreImpl& mySQLCoreImpl_;
|
||
|
// bool isOrdered_;
|
||
|
unsigned char * my_strcat(const std::string& table,
|
||
|
const std::string& tablet,
|
||
|
const std::string& key,
|
||
|
size_t * len);
|
||
|
unsigned char * buf_key(const TabletMetadata& m, const RecordKey& r,
|
||
|
size_t * len);
|
||
|
unsigned char * buf_val(const StorageRecord &val,
|
||
|
size_t * len);
|
||
|
SuCode::ResponseCode val_buf(StorageRecord &ret,
|
||
|
const unsigned char * buf, size_t buf_len);
|
||
|
public:
|
||
|
LSMPersistentStoreImpl(bool ordered);
|
||
|
virtual ~LSMPersistentStoreImpl();
|
||
|
|
||
|
/**
|
||
|
* See PersistentStore API
|
||
|
*/
|
||
|
SuCode::ResponseCode init(const SectionConfig& config);
|
||
|
|
||
|
/**
|
||
|
* See PersistentStore API
|
||
|
*/
|
||
|
bool isOrdered();
|
||
|
|
||
|
/**
|
||
|
* See PersistentStore API
|
||
|
*/
|
||
|
SuCode::ResponseCode addEmptyTablet(TabletMetadata& tabletMeta);
|
||
|
|
||
|
/**
|
||
|
* See PersistentStore API
|
||
|
*/
|
||
|
SuCode::ResponseCode dropTablet(TabletMetadata& tabletMeta);
|
||
|
|
||
|
/**
|
||
|
* See PersistentStore API
|
||
|
*/
|
||
|
SuCode::ResponseCode clearTabletRange(TabletMetadata& tabletMeta,
|
||
|
uint32_t removalLimit);
|
||
|
|
||
|
/**
|
||
|
* See PersistentStore API
|
||
|
*/
|
||
|
SuCode::ResponseCode getApproximateTableSize(TabletMetadata& tabletMeta,
|
||
|
int64_t& tableSize,
|
||
|
int64_t & rowCount);
|
||
|
|
||
|
/**
|
||
|
* See PersistentStore API
|
||
|
*/
|
||
|
SuCode::ResponseCode get(const TabletMetadata& tabletMeta,
|
||
|
StorageRecord& recordData);
|
||
|
|
||
|
/**
|
||
|
* See PersistentStore API
|
||
|
*/
|
||
|
SuCode::ResponseCode update(const TabletMetadata& tabletMeta,
|
||
|
const StorageRecord& updateData);
|
||
|
|
||
|
/**
|
||
|
* See PersistentStore API
|
||
|
*/
|
||
|
SuCode::ResponseCode insert(const TabletMetadata& tabletMeta,
|
||
|
const StorageRecord& insertData);
|
||
|
/**
|
||
|
* See PersistentStore API
|
||
|
*/
|
||
|
SuCode::ResponseCode remove(const TabletMetadata& tabletMeta,
|
||
|
const RecordKey& recordKey);
|
||
|
|
||
|
/**
|
||
|
* See PersistentStore API
|
||
|
*/
|
||
|
StorageRecordIterator
|
||
|
scan(const TabletMetadata& tabletMeta, const ScanContinuation& continuation,
|
||
|
bool getMetadataOnly, const uint64_t expiryTime, unsigned int scanLimit);
|
||
|
|
||
|
/**
|
||
|
* See PersistentStore API
|
||
|
*/
|
||
|
SuCode::ResponseCode getSnapshotExporter(const TabletMetadata& tabletMeta,
|
||
|
const std::string& snapshotId,
|
||
|
SnapshotExporterAutoPtr& exporter);
|
||
|
|
||
|
/**
|
||
|
* See PersistentStore API
|
||
|
*/
|
||
|
SuCode::ResponseCode getSnapshotImporter(const TabletMetadata& tabletMeta,
|
||
|
const std::string& version,
|
||
|
const std::string& snapshotId,
|
||
|
SnapshotImporterAutoPtr& snapshot) ;
|
||
|
|
||
|
/**
|
||
|
* See PersistentStore API
|
||
|
*/
|
||
|
SuCode::ResponseCode getIncomingCopyProgress(const TabletMetadata& metadata,
|
||
|
const std::string& snapshotId,
|
||
|
int64_t& current,
|
||
|
int64_t& estimated) const;
|
||
|
|
||
|
/**
|
||
|
* See PersistentStore API
|
||
|
*/
|
||
|
SuCode::ResponseCode getOutgoingCopyProgress(const TabletMetadata& metadata,
|
||
|
const std::string& snapshotId,
|
||
|
int64_t& current,
|
||
|
int64_t& estimated) const;
|
||
|
private:
|
||
|
/**
|
||
|
* connect to the database. Noop if already connected.
|
||
|
*
|
||
|
* @return SuCode::SuOk if successful, error otherwise
|
||
|
*/
|
||
|
// SuCode::ResponseCode connect();
|
||
|
|
||
|
private:
|
||
|
LSMPersistentStoreImpl(LSMPersistentStoreImpl &);
|
||
|
LSMPersistentStoreImpl operator=(LSMPersistentStoreImpl &);
|
||
|
|
||
|
logstore_handle_t * l_;
|
||
|
|
||
|
};
|
||
|
|
||
|
#endif /*LSM_PSTORE_IMPL_H*/
|