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
|
struct ircd::db::options::map
|
||||||
:std::unordered_map<std::string, std::string>
|
: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
|
// Output of options structures from map
|
||||||
operator rocksdb::DBOptions() const;
|
operator rocksdb::DBOptions() const;
|
||||||
operator rocksdb::ColumnFamilyOptions() const;
|
operator rocksdb::ColumnFamilyOptions() const;
|
||||||
|
@ -120,7 +126,7 @@ struct ircd::db::options::map
|
||||||
map(const options &);
|
map(const options &);
|
||||||
|
|
||||||
// Input of options map from user
|
// 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)}
|
: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()
|
ircd::db::options::map::operator rocksdb::BlockBasedTableOptions()
|
||||||
const
|
const
|
||||||
{
|
{
|
||||||
rocksdb::BlockBasedTableOptions ret;
|
rocksdb::BlockBasedTableOptions ret;
|
||||||
throw_on_error
|
return merge(ret);
|
||||||
{
|
}
|
||||||
rocksdb::GetBlockBasedTableOptionsFromMap(ret, *this, &ret)
|
|
||||||
};
|
|
||||||
|
|
||||||
return ret;
|
ircd::db::options::map::operator rocksdb::PlainTableOptions()
|
||||||
|
const
|
||||||
|
{
|
||||||
|
rocksdb::PlainTableOptions ret;
|
||||||
|
return merge(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
ircd::db::options::map::operator rocksdb::ColumnFamilyOptions()
|
ircd::db::options::map::operator rocksdb::ColumnFamilyOptions()
|
||||||
const
|
const
|
||||||
{
|
{
|
||||||
rocksdb::ColumnFamilyOptions ret;
|
rocksdb::ColumnFamilyOptions ret;
|
||||||
throw_on_error
|
return merge(ret);
|
||||||
{
|
|
||||||
rocksdb::GetColumnFamilyOptionsFromMap(ret, *this, &ret)
|
|
||||||
};
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ircd::db::options::map::operator rocksdb::DBOptions()
|
ircd::db::options::map::operator rocksdb::DBOptions()
|
||||||
const
|
const
|
||||||
{
|
{
|
||||||
rocksdb::DBOptions ret;
|
rocksdb::DBOptions ret;
|
||||||
|
return merge(ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
rocksdb::BlockBasedTableOptions
|
||||||
|
ircd::db::options::map::merge(const rocksdb::BlockBasedTableOptions &opts)
|
||||||
|
const
|
||||||
|
{
|
||||||
|
rocksdb::BlockBasedTableOptions ret;
|
||||||
throw_on_error
|
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;
|
return ret;
|
||||||
|
|
Loading…
Reference in a new issue