blob: 8b5b8829df06777b08df8b9e16422ebe43898570 [file] [log] [blame]
// Copyright 2020 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 HERMES_DBUS_RESULT_H_
#define HERMES_DBUS_RESULT_H_
#include <memory>
#include <utility>
namespace hermes {
template <typename... T>
class DbusResult {
public:
using DBusResponse = brillo::dbus_utils::DBusMethodResponse<T...>;
explicit DbusResult(std::unique_ptr<DBusResponse> response)
: response_(std::move(response)) {}
DbusResult(const DbusResult&) = default;
DbusResult(DbusResult&&) = default;
DbusResult& operator=(const DbusResult&) = default;
DbusResult& operator=(DbusResult&&) = default;
void Success(const T&... object) const { response_->Return(object...); }
void Error(const brillo::ErrorPtr& decoded_error) const {
response_->ReplyWithError(decoded_error.get());
}
private:
std::shared_ptr<DBusResponse> response_;
};
} // namespace hermes
#endif // HERMES_DBUS_RESULT_H_