RocksDB

 view release on metacpan or  search on metacpan

lib/RocksDB.xs  view on Meta::CPAN

        if (val = hv_fetchs(options, "reduce_level", 0))
            reduce_level = SvTRUE(*val);
        if (val = hv_fetchs(options, "target_level", 0))
            target_level = SvIV(*val);
    }
    THIS->db->CompactRange(b ? &sbegin : NULL, e ? &send : NULL, reduce_level, target_level);

int
RocksDB::DB::number_levels()
CODE:
    RETVAL = THIS->db->NumberLevels();
OUTPUT:
    RETVAL

int
RocksDB::DB::max_mem_compaction_level()
CODE:
    RETVAL = THIS->db->MaxMemCompactionLevel();
OUTPUT:
    RETVAL

int
RocksDB::DB::level0_stop_write_trigger()
CODE:
    RETVAL = THIS->db->Level0StopWriteTrigger();
OUTPUT:
    RETVAL

void
RocksDB::DB::flush(HV *options = NULL)
CODE:
    rocksdb::FlushOptions opts = rocksdb::FlushOptions();
    if (options)
        apply_flush_options(aTHX_ &opts, options);
    CROAK_ON_ERROR(THIS->db->Flush(opts));

void
RocksDB::DB::disable_file_deletions()
CODE:
    THIS->db->DisableFileDeletions();

void
RocksDB::DB::enable_file_deletions()
CODE:
    THIS->db->EnableFileDeletions();

void
RocksDB::DB::delete_file(const char* name)
CODE:
    THIS->db->DeleteFile(name);

rocksdb::SequenceNumber
RocksDB::DB::get_latest_sequence_number()
CODE:
    RETVAL = THIS->db->GetLatestSequenceNumber();
OUTPUT:
    RETVAL

void
RocksDB::DB::get_live_files_meta_data()
PPCODE:
    std::vector<rocksdb::LiveFileMetaData> metadata;
    THIS->db->GetLiveFilesMetaData(&metadata);
    for (std::vector<rocksdb::LiveFileMetaData>::size_type i = 0; i < metadata.size(); i++) {
        rocksdb::LiveFileMetaData data = metadata[i];
        HV *hv = newHV();
        hv_stores(hv, "name", newSVpvn(data.name.c_str(), data.name.size()));
        hv_stores(hv, "level", newSViv(data.level));
        hv_stores(hv, "size", newSViv(data.size));
        hv_stores(hv, "smallestkey", newSVpvn(data.smallestkey.c_str(), data.smallestkey.size()));
        hv_stores(hv, "largestkey", newSVpvn(data.largestkey.c_str(), data.largestkey.size()));
        hv_stores(hv, "smallest_seqno", newSVnv(data.smallest_seqno));
        hv_stores(hv, "largest_seqno", newSVnv(data.largest_seqno));
        mXPUSHs(newRV_noinc((SV*) hv));
    }

void
RocksDB::DB::get_sorted_wal_files()
PPCODE:
    rocksdb::VectorLogPtr files;
    CROAK_ON_ERROR(THIS->db->GetSortedWalFiles(files));
    for (std::vector<std::unique_ptr<rocksdb::LogFile>>::size_type i = 0; i < files.size(); i++) {
        HV* hv = newHV();
        std::string path_name = files[i]->PathName();
        hv_stores(hv, "path_name", newSVpvn(path_name.c_str(), path_name.size()));
        hv_stores(hv, "log_number", newSViv(files[i]->LogNumber()));
        SV* type;
        if (files[i]->Type() == rocksdb::WalFileType::kArchivedLogFile) {
            type = newSVpvs("archived");
        } else { /* kAliveLogFile */
            type = newSVpvs("alive");
        }
        hv_stores(hv, "type", type);
        hv_stores(hv, "start_sequence", newSViv(files[i]->StartSequence()));
        hv_stores(hv, "size_file_bytes", newSViv(files[i]->SizeFileBytes()));
        mXPUSHs(newRV_noinc((SV*) hv));
    }

RocksDB::TransactionLogIterator*
RocksDB::DB::get_updates_since(rocksdb::SequenceNumber seq_number)
PREINIT:
    const char* CLASS = "RocksDB::TransactionLogIterator";
CODE:
    auto iter = new RocksDB::TransactionLogIterator();
    rocksdb::Status status = THIS->db->GetUpdatesSince(seq_number, &iter->ptr);
    if (!status.ok()) {
        delete iter;
        CROAK_ON_ERROR(status);
    }
    RETVAL = iter;
OUTPUT:
    RETVAL

std::string
RocksDB::DB::get_db_identity()
CODE:
    std::string identity;
    CROAK_ON_ERROR(THIS->db->GetDbIdentity(identity));
    RETVAL = identity;
OUTPUT:
    RETVAL

RocksDB::Statistics*
RocksDB::DB::get_statistics()
PREINIT:
    const char* CLASS = "RocksDB::Statistics";
CODE:
    if (THIS->db->GetOptions().statistics != NULL) {
        RETVAL = new RocksDB::Statistics(THIS->db->GetOptions().statistics);
    } else {
        RETVAL = NULL;
    }
OUTPUT:
    RETVAL

void
RocksDB::DB::CLEAR()
CODE:
    rocksdb::Iterator* it = THIS->db->NewIterator(rocksdb::ReadOptions());

lib/RocksDB.xs  view on Meta::CPAN

CLEANUP:
    DESTROY_ROCKSDB_OBJ(SELF);

MODULE = RocksDB        PACKAGE = RocksDB::Iterator

SV*
rocksdb::Iterator::seek_to_first()
CODE:
    THIS->SeekToFirst();
    RETVAL = SvREFCNT_inc_simple_NN(SELF);
OUTPUT:
    RETVAL

SV*
rocksdb::Iterator::seek_to_last()
CODE:
    THIS->SeekToLast();
    RETVAL = SvREFCNT_inc_simple_NN(SELF);
OUTPUT:
    RETVAL

SV*
rocksdb::Iterator::seek(rocksdb::Slice target)
CODE:
    THIS->Seek(target);
    RETVAL = SvREFCNT_inc_simple_NN(SELF);
OUTPUT:
    RETVAL

void
rocksdb::Iterator::next()
CODE:
    CHECK_ITER_VALID(THIS);
    THIS->Next();

void
rocksdb::Iterator::prev()
CODE:
    CHECK_ITER_VALID(THIS);
    THIS->Prev();

bool
rocksdb::Iterator::valid()
CODE:
    RETVAL = THIS->Valid();
OUTPUT:
    RETVAL

rocksdb::Slice
rocksdb::Iterator::key()
INIT:
    CHECK_ITER_VALID(THIS);

rocksdb::Slice
rocksdb::Iterator::value()
INIT:
    CHECK_ITER_VALID(THIS);

void
rocksdb::Iterator::each()
PPCODE:
    if (!THIS->Valid())
        XSRETURN_EMPTY;
    rocksdb::Slice key = THIS->key(), value = THIS->value();
    mXPUSHs(newSVpvn(key.data(), key.size()));
    mXPUSHs(newSVpvn(value.data(), value.size()));
    THIS->Next();

void
rocksdb::Iterator::reverse_each()
PPCODE:
    if (!THIS->Valid())
        XSRETURN_EMPTY;
    rocksdb::Slice key = THIS->key(), value = THIS->value();
    mXPUSHs(newSVpvn(key.data(), key.size()));
    mXPUSHs(newSVpvn(value.data(), value.size()));
    THIS->Prev();

void
rocksdb::Iterator::DESTROY()
CLEANUP:
    DESTROY_ROCKSDB_OBJ(SELF);

MODULE = RocksDB        PACKAGE = RocksDB::WriteBatch

rocksdb::WriteBatch *
rocksdb::WriteBatch::new()

void
rocksdb::WriteBatch::put(rocksdb::Slice key, rocksdb::Slice value)
CODE:
    THIS->Put(key, value);

void
rocksdb::WriteBatch::merge(rocksdb::Slice key, rocksdb::Slice value)
CODE:
    THIS->Merge(key, value);

void
rocksdb::WriteBatch::remove(rocksdb::Slice key)
ALIAS:
    RocksDB::WriteBatch::delete = 1
CODE:
    THIS->Delete(key);

void
rocksdb::WriteBatch::put_log_data(rocksdb::Slice blob)
CODE:
    THIS->PutLogData(blob);

int
rocksdb::WriteBatch::count()
CODE:
    RETVAL = THIS->Count();
OUTPUT:
    RETVAL

std::string
rocksdb::WriteBatch::data()
CODE:
    RETVAL = THIS->Data();
OUTPUT:
    RETVAL

void
rocksdb::WriteBatch::clear()
CODE:
    THIS->Clear();

void
rocksdb::WriteBatch::iterate(RocksDB::WriteBatchHandler* handler)



( run in 0.541 second using v1.01-cache-2.11-cpan-5511b514fd6 )