Skip to content

Commit

Permalink
Merge branch 'release/0.4.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
iabudiab committed Jan 17, 2015
2 parents 652e58d + f585af6 commit b48f75b
Show file tree
Hide file tree
Showing 57 changed files with 3,378 additions and 168 deletions.
174 changes: 170 additions & 4 deletions ObjectiveRocks.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

6 changes: 5 additions & 1 deletion ObjectiveRocks/ObjectiveRocks.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,19 +29,23 @@
#import "RocksDBCache.h"
#import "RocksDBFilterPolicy.h"
#import "RocksDBMemTableRepFactory.h"
#import "RocksDBEnv.h"

#import "RocksDBSnapshot.h"

#import "RocksDBMergeOperator.h"

#import "RocksDBTypes.h"
#import "RocksDBError.h"

#ifndef ROCKSDB_LITE

#import "RocksDBColumnFamilyMetadata.h"

#import "RocksDBPlainTableOptions.h"
#import "RocksDBCuckooTableOptions.h"

#import "RocksDBThreadStatus.h"

#import "RocksDBCheckpoint.h"

#import "RocksDBStatistics.h"
Expand Down
24 changes: 24 additions & 0 deletions ObjectiveRocks/RocksDB+Private.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
//
// RocksDB+Private.h
// ObjectiveRocks
//
// Created by Iska on 11/01/15.
// Copyright (c) 2015 BrainCookie. All rights reserved.
//

#import "RocksDB.h"

namespace rocksdb {
class DB;
class ColumnFamilyHandle;
}

@interface RocksDB (Private)

@property (nonatomic, assign) rocksdb::DB *db;
@property (nonatomic, assign) rocksdb::ColumnFamilyHandle *columnFamily;
@property (nonatomic, retain) RocksDBOptions *options;
@property (nonatomic, retain) RocksDBReadOptions *readOptions;
@property (nonatomic, retain) RocksDBWriteOptions *writeOptions;

@end
16 changes: 14 additions & 2 deletions ObjectiveRocks/RocksDB.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

#import <Foundation/Foundation.h>
#import "RocksDBColumnFamilyDescriptor.h"
#import "RocksDBColumnFamilyMetaData.h"
#import "RocksDBOptions.h"
#import "RocksDBReadOptions.h"
#import "RocksDBWriteOptions.h"
Expand All @@ -19,8 +20,6 @@

@interface RocksDB : NSObject

+ (NSArray *)listColumnFamiliesInDatabaseAtPath:(NSString *)path;

- (instancetype)initWithPath:(NSString *)path;
- (instancetype)initWithPath:(NSString *)path
andDBOptions:(void (^)(RocksDBOptions *options))options;
Expand All @@ -33,10 +32,23 @@
- (void)setDefaultReadOptions:(void (^)(RocksDBReadOptions *readOptions))readOptions
andWriteOptions:(void (^)(RocksDBWriteOptions *writeOptions))writeOptions;

@end

@interface RocksDB (ColumnFamilies)

+ (NSArray *)listColumnFamiliesInDatabaseAtPath:(NSString *)path;

- (RocksDBColumnFamily *)createColumnFamilyWithName:(NSString *)name
andOptions:(void (^)(RocksDBColumnFamilyOptions *options))optionsBlock;

- (NSArray *)columnFamilies;

#ifndef ROCKSDB_LITE

- (RocksDBColumnFamilyMetaData *)columnFamilyMetaData;

#endif

@end

#ifndef ROCKSDB_LITE
Expand Down
81 changes: 48 additions & 33 deletions ObjectiveRocks/RocksDB.mm
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,18 @@
#import "RocksDB.h"

#import "RocksDBColumnFamily.h"
#import "RocksDBColumnFamily+Private.h"
#import "RocksDBColumnFamilyMetaData+Private.h"

#import "RocksDBOptions.h"
#import "RocksDBReadOptions.h"
#import "RocksDBWriteOptions.h"

#import "RocksDBIterator+Private.h"
#import "RocksDBWriteBatch+Private.h"

#import "RocksDBSnapshot.h"
#import "RocksDBSnapshot+Private.h"

#import "RocksDBError.h"
#import "RocksDBSlice.h"
Expand Down Expand Up @@ -49,10 +57,6 @@ @interface RocksDBWriteOptions (Private)
@property (nonatomic, assign) rocksdb::WriteOptions options;
@end

@interface RocksDBWriteBatch (Private)
@property (nonatomic, assign) rocksdb::WriteBatch writeBatch;
@end

@interface RocksDB ()
{
NSString *_path;
Expand Down Expand Up @@ -99,7 +103,7 @@ - (instancetype)initWithPath:(NSString *)path andDBOptions:(void (^)(RocksDBOpti
optionsBlock(_options);
}

if ([self open] == NO) {
if ([self openColumnFamilies:nil] == NO) {
return nil;
}
[self setDefaultReadOptions:nil andWriteOptions:nil];
Expand Down Expand Up @@ -155,29 +159,21 @@ - (void)close

#pragma mark - Open

- (BOOL)open
{
rocksdb::Status status = rocksdb::DB::Open(_options.options, _path.UTF8String, &_db);
if (!status.ok()) {
NSLog(@"Error opening database: %@", [RocksDBError errorWithRocksStatus:status]);
[self close];
return NO;
}
_columnFamily = _db->DefaultColumnFamily();

return YES;
}

- (BOOL)openColumnFamilies:(RocksDBColumnFamilyDescriptor *)descriptor
{
std::vector<rocksdb::ColumnFamilyDescriptor> *columnFamilies = descriptor.columnFamilies;
_columnFamilyHandles = new std::vector<rocksdb::ColumnFamilyHandle *>;
rocksdb::Status status;
if (descriptor == nil) {
status = rocksdb::DB::Open(_options.options, _path.UTF8String, &_db);
} else {
std::vector<rocksdb::ColumnFamilyDescriptor> *columnFamilies = descriptor.columnFamilies;
_columnFamilyHandles = new std::vector<rocksdb::ColumnFamilyHandle *>;
status = rocksdb::DB::Open(_options.options,
_path.UTF8String,
*columnFamilies,
_columnFamilyHandles,
&_db);
}

rocksdb::Status status = rocksdb::DB::Open(_options.options,
_path.UTF8String,
*columnFamilies,
_columnFamilyHandles,
&_db);

if (!status.ok()) {
NSLog(@"Error opening database: %@", [RocksDBError errorWithRocksStatus:status]);
Expand All @@ -186,14 +182,6 @@ - (BOOL)openColumnFamilies:(RocksDBColumnFamilyDescriptor *)descriptor
}
_columnFamily = _db->DefaultColumnFamily();

_columnFamilies = [NSMutableArray new];
for(auto it = std::begin(*_columnFamilyHandles); it != std::end(*_columnFamilyHandles); ++it) {
RocksDBColumnFamily *columnFamily = [[RocksDBColumnFamily alloc] initWithDBInstance:_db
columnFamily:*it
andOptions:_options];
[_columnFamilies addObject:columnFamily];
}

return YES;
}

Expand Down Expand Up @@ -240,9 +228,36 @@ - (RocksDBColumnFamily *)createColumnFamilyWithName:(NSString *)name andOptions:

- (NSArray *)columnFamilies
{
if (_columnFamilyHandles == nullptr) {
return nil;
}

if (_columnFamilies == nil) {
_columnFamilies = [NSMutableArray new];
for(auto it = std::begin(*_columnFamilyHandles); it != std::end(*_columnFamilyHandles); ++it) {
RocksDBColumnFamily *columnFamily = [[RocksDBColumnFamily alloc] initWithDBInstance:_db
columnFamily:*it
andOptions:_options];
[_columnFamilies addObject:columnFamily];
}
}

return _columnFamilies;
}

#ifndef ROCKSDB_LITE

- (RocksDBColumnFamilyMetaData *)columnFamilyMetaData
{
rocksdb::ColumnFamilyMetaData metadata;
_db->GetColumnFamilyMetaData(_columnFamily, &metadata);

RocksDBColumnFamilyMetaData *columnFamilyMetaData = [[RocksDBColumnFamilyMetaData alloc] initWithMetaData:metadata];
return columnFamilyMetaData;
}

#endif

#pragma mark - Read/Write Options

- (void)setDefaultReadOptions:(void (^)(RocksDBReadOptions *))readOptionsBlock andWriteOptions:(void (^)(RocksDBWriteOptions *))writeOptionsBlock
Expand Down
9 changes: 3 additions & 6 deletions ObjectiveRocks/RocksDBBackupEngine.mm
Original file line number Diff line number Diff line change
Expand Up @@ -128,11 +128,11 @@ - (BOOL)deleteBackupWithId:(uint32_t)backupId error:(NSError *__autoreleasing *)

- (NSArray *)backupInfo
{
std::vector<rocksdb::BackupInfo> *backup_info = new std::vector<rocksdb::BackupInfo>;
_backupEngine->GetBackupInfo(backup_info);
std::vector<rocksdb::BackupInfo> backup_info;
_backupEngine->GetBackupInfo(&backup_info);

NSMutableArray *backupInfo = [NSMutableArray array];
for (auto it = std::begin(*backup_info); it != std::end(*backup_info); ++it) {
for (auto it = std::begin(backup_info); it != std::end(backup_info); ++it) {
RocksDBBackupInfo *info = [RocksDBBackupInfo new];
info.backupId = (*it).backup_id;
info.timestamp = (*it).timestamp;
Expand All @@ -141,9 +141,6 @@ - (NSArray *)backupInfo
[backupInfo addObject:info];
}

backup_info->clear();
delete backup_info;

return backupInfo;
}

Expand Down
1 change: 0 additions & 1 deletion ObjectiveRocks/RocksDBCheckpoint.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
//

#import <Foundation/Foundation.h>

#import "RocksDB.h"

@interface RocksDBCheckpoint : NSObject
Expand Down
5 changes: 1 addition & 4 deletions ObjectiveRocks/RocksDBCheckpoint.mm
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,11 @@
//

#import "RocksDBCheckpoint.h"
#import "RocksDB+Private.h"
#import "RocksDBError.h"

#import <rocksdb/utilities/checkpoint.h>

@interface RocksDB (Private)
@property (nonatomic, assign) rocksdb::DB *db;
@end

@interface RocksDBCheckpoint ()
{
rocksdb::Checkpoint *_checkpoint;
Expand Down
24 changes: 24 additions & 0 deletions ObjectiveRocks/RocksDBColumnFamily+Private.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
//
// RocksDBColumnFamily+Private.h
// ObjectiveRocks
//
// Created by Iska on 11/01/15.
// Copyright (c) 2015 BrainCookie. All rights reserved.
//

#import "RocksDBColumnFamily.h"

namespace rocksdb {
class DB;
class ColumnFamilyHandle;
}

@interface RocksDBColumnFamily (Private)

@property (nonatomic, assign) rocksdb::ColumnFamilyHandle *columnFamily;

- (instancetype)initWithDBInstance:(rocksdb::DB *)db
columnFamily:(rocksdb::ColumnFamilyHandle *)columnFamily
andOptions:(RocksDBOptions *)options;

@end
9 changes: 0 additions & 9 deletions ObjectiveRocks/RocksDBColumnFamily.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,6 @@
#import "RocksDB.h"
#import "RocksDBOptions.h"

namespace rocksdb {
class DB;
class ColumnFamilyHandle;
}

@interface RocksDBColumnFamily : RocksDB

- (instancetype)initWithPath:(NSString *)path __attribute__((unavailable("Create column family via a RocksDB instance")));
Expand All @@ -27,10 +22,6 @@ namespace rocksdb {
- (RocksDBColumnFamily *)createColumnFamilyWithName:(NSString *)name
andOptions:(void (^)(RocksDBColumnFamilyOptions *options))optionsBlock __attribute__((unavailable("Use the superclass RocksDB instead")));

- (instancetype)initWithDBInstance:(rocksdb::DB *)db
columnFamily:(rocksdb::ColumnFamilyHandle *)columnFamily
andOptions:(RocksDBOptions *)options;

- (void)drop;

@end
9 changes: 1 addition & 8 deletions ObjectiveRocks/RocksDBColumnFamily.mm
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,10 @@
//

#import "RocksDBColumnFamily.h"
#import "RocksDB+Private.h"

#import <rocksdb/db.h>

@interface RocksDB (Private)
@property (nonatomic, assign) rocksdb::DB *db;
@property (nonatomic, assign) rocksdb::ColumnFamilyHandle *columnFamily;
@property (nonatomic, retain) RocksDBOptions *options;
@property (nonatomic, retain) RocksDBReadOptions *readOptions;
@property (nonatomic, retain) RocksDBWriteOptions *writeOptions;
@end

@implementation RocksDBColumnFamily

- (instancetype)initWithDBInstance:(rocksdb::DB *)db
Expand Down
3 changes: 3 additions & 0 deletions ObjectiveRocks/RocksDBColumnFamilyDescriptor.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,11 @@
#import <Foundation/Foundation.h>
#import "RocksDBColumnFamilyOptions.h"

extern NSString * const RocksDBDefaultColumnFamilyName;

@interface RocksDBColumnFamilyDescriptor : NSObject

- (void)addDefaultColumnFamilyWithOptions:(void (^)(RocksDBColumnFamilyOptions *options))options;
- (void)addColumnFamilyWithName:(NSString *)name andOptions:(void (^)(RocksDBColumnFamilyOptions *options))options;

@end
11 changes: 11 additions & 0 deletions ObjectiveRocks/RocksDBColumnFamilyDescriptor.mm
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@

#import <rocksdb/db.h>

NSString * const RocksDBDefaultColumnFamilyName = @"default";

@interface RocksDBColumnFamilyOptions ()
@property (nonatomic, assign) rocksdb::ColumnFamilyOptions options;
@end
Expand All @@ -24,6 +26,8 @@ @interface RocksDBColumnFamilyDescriptor ()
@implementation RocksDBColumnFamilyDescriptor
@synthesize columnFamilies = _columnFamilies;

#pragma mark - Lifecycle

- (instancetype)init
{
self = [super init];
Expand All @@ -44,6 +48,13 @@ - (void)dealloc
}
}

#pragma mark - Add Column Families

- (void)addDefaultColumnFamilyWithOptions:(void (^)(RocksDBColumnFamilyOptions *options))options
{
[self addColumnFamilyWithName:RocksDBDefaultColumnFamilyName andOptions:options];
}

- (void)addColumnFamilyWithName:(NSString *)name andOptions:(void (^)(RocksDBColumnFamilyOptions *options))optionsBlock
{
RocksDBColumnFamilyOptions *options = [RocksDBColumnFamilyOptions new];
Expand Down
Loading

0 comments on commit b48f75b

Please sign in to comment.