T getAdminValue()

in glean/rocksdb/rocksdb.cpp [482:514]


  T getAdminValue(AdminId id, T def, bool write, F&& notFound) {
    container_.requireOpen();
    rocksdb::PinnableSlice val;
    binary::Output key;
    key.fixed(id);
    auto s = container_.db->Get(
      rocksdb::ReadOptions(),
      container_.family(Family::admin),
      slice(key),
      &val);
    if (!s.IsNotFound()) {
      check(s);
      binary::Input value = input(val);
      auto result = value.fixed<T>();
      if (!value.empty()) {
        rts::error("corrupt database - invalid {}",
          admin_names[static_cast<uint32_t>(id)]);
      }
      return result;
    } else {
      notFound();
      if (write) {
        binary::Output value;
        value.fixed(def);
        check(container_.db->Put(
          container_.writeOptions,
          container_.family(Family::admin),
          slice(key),
          slice(value)));
      }
      return def;
    }
  }