mirror of
https://github.com/matrix-construct/construct
synced 2024-09-27 11:18:51 +02:00
ircd::db::options::map: Add merge suite for adding to existing options.
This commit is contained in:
parent
7f45a7eb63
commit
fc06ea8ded
2 changed files with 63 additions and 25 deletions
|
@ -110,6 +110,12 @@ struct ircd::db::options
|
|||
struct ircd::db::options::map
|
||||
:std::unordered_map<std::string, std::string>
|
||||
{
|
||||
// Merge output of options structures from map (map takes precedence).
|
||||
rocksdb::DBOptions merge(const rocksdb::DBOptions &) const;
|
||||
rocksdb::ColumnFamilyOptions merge(const rocksdb::ColumnFamilyOptions &) const;
|
||||
rocksdb::PlainTableOptions merge(const rocksdb::PlainTableOptions &) const;
|
||||
rocksdb::BlockBasedTableOptions merge(const rocksdb::BlockBasedTableOptions &) const;
|
||||
|
||||
// Output of options structures from map
|
||||
operator rocksdb::DBOptions() const;
|
||||
operator rocksdb::ColumnFamilyOptions() const;
|
||||
|
@ -120,7 +126,7 @@ struct ircd::db::options::map
|
|||
map(const options &);
|
||||
|
||||
// Input of options map from user
|
||||
map(std::unordered_map<std::string, std::string> m)
|
||||
map(std::unordered_map<std::string, std::string> m = {})
|
||||
:std::unordered_map<std::string, std::string>{std::move(m)}
|
||||
{}
|
||||
};
|
||||
|
|
80
ircd/db.cc
80
ircd/db.cc
|
@ -3920,49 +3920,81 @@ ircd::db::options::map::map(const options &o)
|
|||
};
|
||||
}
|
||||
|
||||
ircd::db::options::map::operator rocksdb::PlainTableOptions()
|
||||
const
|
||||
{
|
||||
rocksdb::PlainTableOptions ret;
|
||||
throw_on_error
|
||||
{
|
||||
rocksdb::GetPlainTableOptionsFromMap(ret, *this, &ret)
|
||||
};
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
ircd::db::options::map::operator rocksdb::BlockBasedTableOptions()
|
||||
const
|
||||
{
|
||||
rocksdb::BlockBasedTableOptions ret;
|
||||
throw_on_error
|
||||
{
|
||||
rocksdb::GetBlockBasedTableOptionsFromMap(ret, *this, &ret)
|
||||
};
|
||||
return merge(ret);
|
||||
}
|
||||
|
||||
return ret;
|
||||
ircd::db::options::map::operator rocksdb::PlainTableOptions()
|
||||
const
|
||||
{
|
||||
rocksdb::PlainTableOptions ret;
|
||||
return merge(ret);
|
||||
}
|
||||
|
||||
ircd::db::options::map::operator rocksdb::ColumnFamilyOptions()
|
||||
const
|
||||
{
|
||||
rocksdb::ColumnFamilyOptions ret;
|
||||
throw_on_error
|
||||
{
|
||||
rocksdb::GetColumnFamilyOptionsFromMap(ret, *this, &ret)
|
||||
};
|
||||
|
||||
return ret;
|
||||
return merge(ret);
|
||||
}
|
||||
|
||||
ircd::db::options::map::operator rocksdb::DBOptions()
|
||||
const
|
||||
{
|
||||
rocksdb::DBOptions ret;
|
||||
return merge(ret);
|
||||
}
|
||||
|
||||
rocksdb::BlockBasedTableOptions
|
||||
ircd::db::options::map::merge(const rocksdb::BlockBasedTableOptions &opts)
|
||||
const
|
||||
{
|
||||
rocksdb::BlockBasedTableOptions ret;
|
||||
throw_on_error
|
||||
{
|
||||
rocksdb::GetDBOptionsFromMap(ret, *this, &ret)
|
||||
rocksdb::GetBlockBasedTableOptionsFromMap(opts, *this, &ret, true, true)
|
||||
};
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
rocksdb::PlainTableOptions
|
||||
ircd::db::options::map::merge(const rocksdb::PlainTableOptions &opts)
|
||||
const
|
||||
{
|
||||
rocksdb::PlainTableOptions ret;
|
||||
throw_on_error
|
||||
{
|
||||
rocksdb::GetPlainTableOptionsFromMap(opts, *this, &ret, true, true)
|
||||
};
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
rocksdb::ColumnFamilyOptions
|
||||
ircd::db::options::map::merge(const rocksdb::ColumnFamilyOptions &opts)
|
||||
const
|
||||
{
|
||||
rocksdb::ColumnFamilyOptions ret;
|
||||
throw_on_error
|
||||
{
|
||||
rocksdb::GetColumnFamilyOptionsFromMap(opts, *this, &ret, true, true)
|
||||
};
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
rocksdb::DBOptions
|
||||
ircd::db::options::map::merge(const rocksdb::DBOptions &opts)
|
||||
const
|
||||
{
|
||||
rocksdb::DBOptions ret;
|
||||
throw_on_error
|
||||
{
|
||||
rocksdb::GetDBOptionsFromMap(opts, *this, &ret, true, true)
|
||||
};
|
||||
|
||||
return ret;
|
||||
|
|
Loading…
Reference in a new issue