Packages
rocksdb
0.17.0
3.1.1
3.1.0
3.0.0
2.6.2
2.6.1
retired
2.6.0
retired
2.5.0
2.4.1
2.4.0
2.3.0
2.2.0
2.1.0
2.0.0
1.9.0
1.8.0
1.7.0
1.6.0
1.5.1
1.5.0
1.4.0
1.3.2
1.3.1
1.3.0
1.2.0
1.1.1
1.1.0
1.0.0
0.26.2
0.26.1
0.26.0
0.25.0
0.24.0
0.23.3
0.23.2
0.23.1
0.23.0
0.22.0
0.21.0
0.20.1
0.20.0
0.19.0
0.18.0
0.17.0
0.16.0
0.15.0
0.14.0
0.13.1
0.13.0
0.12.0
0.11.0
0.10.0
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.1
0.7.0
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
RocksDB for Erlang
Current section
Files
Jump to
Current section
Files
c_src/util.cc
// -------------------------------------------------------------------
// Copyright (c) 2011-2013 Basho Technologies, Inc. All Rights Reserved.
// Copyright (c) 2016-2017 Benoit Chesneau. All Rights Reserved.
//
// This file is provided to you under the Apache License,
// Version 2.0 (the "License"); you may not use this file
// except in compliance with the License. You may obtain
// a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
// -------------------------------------------------------------------
#include "atoms.h"
#include "refobjects.h"
#include "rocksdb/db.h"
#include "rocksdb/slice_transform.h"
#include "util.h"
// Erlang helpers:
ERL_NIF_TERM error_einval(ErlNifEnv* env)
{
return enif_make_tuple2(env, erocksdb::ATOM_ERROR, erocksdb::ATOM_EINVAL);
}
ERL_NIF_TERM error_tuple(ErlNifEnv* env, ERL_NIF_TERM error,
rocksdb::Status& status)
{
ERL_NIF_TERM reason = enif_make_string(env, status.ToString().c_str(),
ERL_NIF_LATIN1);
return enif_make_tuple2(env, erocksdb::ATOM_ERROR,
enif_make_tuple2(env, error, reason));
}
ERL_NIF_TERM slice_to_binary(ErlNifEnv* env, rocksdb::Slice s)
{
ERL_NIF_TERM result;
memcpy(enif_make_new_binary(env, s.size(), &result), s.data(), s.size());
return result;
}
int
binary_to_slice(ErlNifEnv* env, ERL_NIF_TERM val, rocksdb::Slice* slice)
{
ErlNifBinary bin;
if(!enif_inspect_binary(env, val, &bin))
return 0;
*slice = rocksdb::Slice((const char *)bin.data, bin.size);
return 1;
}
int
enif_get_db(ErlNifEnv* env, ERL_NIF_TERM dbval, erocksdb::ReferencePtr<erocksdb::DbObject>* db_ptr)
{
db_ptr->assign(erocksdb::DbObject::RetrieveDbObject(env, dbval));
if(NULL==db_ptr->get())
return 0;
if(NULL==db_ptr->get()->m_Db)
return 0;
return 1;
}
int
enif_get_cf(ErlNifEnv* env, ERL_NIF_TERM cfval, erocksdb::ReferencePtr<erocksdb::ColumnFamilyObject>* cf_ptr)
{
cf_ptr->assign(erocksdb::ColumnFamilyObject::RetrieveColumnFamilyObject(env, cfval));
if(NULL==cf_ptr->get())
return 0;
return 1;
}
int
enif_get_backup_engine(
ErlNifEnv* env, ERL_NIF_TERM val,
erocksdb::ReferencePtr<erocksdb::BackupEngineObject>* backup_engine_ptr)
{
backup_engine_ptr->assign(erocksdb::BackupEngineObject::RetrieveBackupEngineObject(env, val));
if(NULL==backup_engine_ptr->get())
return 0;
return 1;
}