blob: c9a6a5139514a5cc1006084a674506b5cec4540a [file] [log] [blame]
// Copyright (c) 2011 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.
#include "shill/error.h"
#include <string>
#include <base/logging.h>
#include <dbus-c++/error.h>
#include "shill/dbus_adaptor.h"
namespace shill {
// static
const char * const Error::kErrorNames[Error::kNumErrors] = {
SHILL_INTERFACE ".Error.AlreadyExists",
SHILL_INTERFACE ".Error.InProgress",
SHILL_INTERFACE ".Error.InternalError",
SHILL_INTERFACE ".Error.InvalidArguments",
SHILL_INTERFACE ".Error.InvalidNetworkName",
SHILL_INTERFACE ".Error.InvalidPassphrase",
SHILL_INTERFACE ".Error.InvalidProperty",
SHILL_INTERFACE ".Error.NotFound",
SHILL_INTERFACE ".Error.NotSupported",
SHILL_INTERFACE ".Error.PermissionDenied",
SHILL_INTERFACE ".Error.PinError"
};
Error::Error(Type type, const std::string& message)
: type_(type),
message_(message) {
CHECK(type_ < Error::kNumErrors) << "Error type out of range: " << type;
}
Error::~Error() {}
void Error::Populate(Type type, const std::string& message) {
CHECK(type_ < Error::kNumErrors) << "Error type out of range: " << type;
type_ = type;
message_ = message;
}
void Error::ToDBusError(::DBus::Error *error) {
if (type_ < Error::kNumErrors)
*error = ::DBus::Error(kErrorNames[type_], message_.c_str());
}
} // namespace shill