// 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 LIBBRILLO_BRILLO_ERRORS_ERROR_CODES_H_
#define LIBBRILLO_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 base::Location& location,
                                  int errnum);
}  // namespace system

}  // namespace errors
}  // namespace brillo

#endif  // LIBBRILLO_BRILLO_ERRORS_ERROR_CODES_H_
