// Copyright 2018 The Fuchsia 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 COBALT_SRC_LOGGER_STATUS_H_
#define COBALT_SRC_LOGGER_STATUS_H_

namespace cobalt {
namespace logger {

// Status codes returned by various methods in the logger package.
enum Status {
  // Success.
  kOK = 0,

  // Invalid arguments.
  kInvalidArguments = 1,

  // The Cobalt config is invalid.
  kInvalidConfig = 2,

  // The size of the provided data is too large.
  kTooBig = 3,

  // The repository being written to is full.
  kFull = 4,

  // Other error.
  kOther = 5
};

}  // namespace logger
}  // namespace cobalt

#endif  // COBALT_SRC_LOGGER_STATUS_H_
