| // Copyright 2017 The ChromiumOS Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef LOGIN_MANAGER_DBUS_UTIL_H_ | |
| #define LOGIN_MANAGER_DBUS_UTIL_H_ | |
| #include <string> | |
| #include <base/logging.h> | |
| #include <brillo/errors/error.h> | |
| namespace login_manager { | |
| // Creates a D-Bus error instance. | |
| brillo::ErrorPtr CreateError(const std::string& code, | |
| const std::string& message); | |
| // Creates a D-Bus error, but also logs the message. Written as a macro | |
| // to preserve file and line information. | |
| #define DBUS_ERROR_WITH_LOG(log, code, message) \ | |
| ({ \ | |
| constexpr char __message[] = (message); \ | |
| LOG(log) << __message; \ | |
| CreateError((code), __message); \ | |
| }) | |
| #define CREATE_ERROR_AND_LOG(code, message) \ | |
| DBUS_ERROR_WITH_LOG(ERROR, (code), (message)) | |
| #define CREATE_WARNING_AND_LOG(code, message) \ | |
| DBUS_ERROR_WITH_LOG(WARNING, (code), (message)) | |
| } // namespace login_manager | |
| #endif // LOGIN_MANAGER_DBUS_UTIL_H_ |