// Copyright 2016 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 DEBUGD_SRC_SWAP_TOOL_H_
#define DEBUGD_SRC_SWAP_TOOL_H_

#include <string>

#include <base/macros.h>

namespace debugd {

class SwapTool {
 public:
  SwapTool() = default;
  ~SwapTool() = default;

  std::string SwapEnable(int32_t size, bool change_now) const;
  std::string SwapDisable(bool change_now) const;
  std::string SwapStartStop(bool on) const;
  std::string SwapStatus() const;
  std::string SwapSetParameter(const std::string& parameter_name,
                               int32_t parameter_value) const;

 private:
  DISALLOW_COPY_AND_ASSIGN(SwapTool);
};

}  // namespace debugd

#endif  // DEBUGD_SRC_SWAP_TOOL_H_
