// Copyright 2014 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 LIBCHROMEOS_BRILLO_ERRORS_ERROR_CODES_H_
#define LIBCHROMEOS_BRILLO_ERRORS_ERROR_CODES_H_

#include <string>

#include <brillo/brillo_export.h>
#include <brillo/errors/error.h>

namespace brillo {
namespace errors {

namespace dbus {
BRILLO_EXPORT extern const char kDomain[];
}  // namespace dbus

namespace json {
BRILLO_EXPORT extern const char kDomain[];
BRILLO_EXPORT extern const char kParseError[];
BRILLO_EXPORT extern const char kObjectExpected[];
}  // namespace json

namespace http {
BRILLO_EXPORT extern const char kDomain[];
}  // namespace http

namespace system {
BRILLO_EXPORT extern const char kDomain[];

// Adds an Error object to the error chain identified by |error|, using
// the system error code (see "errno").
BRILLO_EXPORT void AddSystemError(ErrorPtr* error,
                                  const tracked_objects::Location& location,
                                  int errnum);
}  // namespace system

}  // namespace errors
}  // namespace brillo

#endif  // LIBCHROMEOS_BRILLO_ERRORS_ERROR_CODES_H_
