// Copyright 2021 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef RUNTIME_PROBE_SYSTEM_PROPERTY_H_
#define RUNTIME_PROBE_SYSTEM_PROPERTY_H_

#include <string>

namespace runtime_probe {

// Light-weight interface to system property with std::string semantics.
class SystemProperty {
 public:
  virtual ~SystemProperty() = default;

  // Reads a system property integer into |value_out|.
  //
  // Returns true on success
  virtual bool GetInt(const std::string& key, int* value_out) = 0;

  // Sets the system property integer |name| to |value|.
  //
  // Returns true on success.
  virtual bool SetInt(const std::string& key, int value) = 0;

  // Reads a system property string and stores it in |value_out|.
  //
  // Returns true on success.
  virtual bool GetString(const std::string& key, std::string* value_out) = 0;

  // Sets a system property string.
  //
  // The maximum length of the value accepted depends on the specific property.
  //
  // Returns true on success.
  virtual bool SetString(const std::string& key, const std::string& value) = 0;
};

}  // namespace runtime_probe

#endif  // RUNTIME_PROBE_SYSTEM_PROPERTY_H_
