Skip to content
This repository was archived by the owner on Oct 30, 2021. It is now read-only.
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 9 additions & 6 deletions src/binding.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,14 @@ Nan::Persistent<FunctionTemplate> RocksDBCache::constructor;
rocksdb::Status OpenDB(const rocksdb::Options& options, const std::string& name, std::unique_ptr<rocksdb::DB>& dbptr) {
rocksdb::DB* db;
rocksdb::Status status = rocksdb::DB::Open(options, name, &db);
dbptr = std::move(std::unique_ptr<rocksdb::DB>(db));
dbptr = std::unique_ptr<rocksdb::DB>(db);
return status;
}

rocksdb::Status OpenForReadOnlyDB(const rocksdb::Options& options, const std::string& name, std::unique_ptr<rocksdb::DB>& dbptr) {
rocksdb::DB* db;
rocksdb::Status status = rocksdb::DB::OpenForReadOnly(options, name, &db);
dbptr = std::move(std::unique_ptr<rocksdb::DB>(db));
dbptr = std::unique_ptr<rocksdb::DB>(db);
return status;
}

Expand Down Expand Up @@ -1093,7 +1093,9 @@ struct Context {
uint32_t mask;
double relev;

Context(Context const& c) = default;
Context() = delete;
Context(Context const& c) = delete;
Context& operator=(Context const& c) = delete;
Context(Cover && cov,
uint32_t mask,
double relev)
Expand Down Expand Up @@ -1293,12 +1295,12 @@ double scoredist(unsigned zoom, double distance, double score) {

void coalesceFinalize(CoalesceBaton* baton, std::vector<Context> && contexts) {
if (!contexts.empty()) {
std::size_t max_contexts = std::min(contexts.size(),static_cast<std::size_t>(40));
// Coalesce stack, generate relevs.
double relevMax = contexts[0].relev;
std::size_t total = 0;
std::map<uint64_t,bool> sets;
std::map<uint64_t,bool>::iterator sit;
std::size_t max_contexts = 40;
baton->features.reserve(max_contexts);
for (auto && context : contexts) {
// Maximum allowance of coalesced features: 40.
Expand Down Expand Up @@ -1412,12 +1414,13 @@ void coalesceSingle(uv_work_t* req) {
}

// sort grids by distance to proximity point
// TODO: partial_sort here would be ideal
std::sort(covers.begin(), covers.end(), coverSortByRelev);
std::size_t max_contexts = std::min(covers.size(),static_cast<std::size_t>(40));

uint32_t lastid = 0;
std::size_t added = 0;
std::vector<Context> contexts;
std::size_t max_contexts = 40;
contexts.reserve(max_contexts);
for (auto && cover : covers) {
// Stop at 40 contexts
Expand Down Expand Up @@ -1623,7 +1626,7 @@ void coalesceMulti(uv_work_t* req) {
contexts.emplace_back(std::move(context));
}
}

// TODO: partial_sort here would be ideal
std::sort(contexts.begin(), contexts.end(), contextSortByRelev);
coalesceFinalize(baton, std::move(contexts));
} catch (std::exception const& ex) {
Expand Down