blob: 23fe5c397c672e46332b0e71f17ac78f8a3a7674 [file] [log] [blame]
// Copyright 2024 The Fuchsia 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 "examples/power/wake_lease/cpp/wake_lease.h"
#include <lib/fpromise/bridge.h>
#include <lib/fpromise/promise.h>
#include <string>
namespace examples::power {
fpromise::promise<WakeLease, Error> WakeLease::Take(
const fidl::Client<fuchsia_power_system::ActivityGovernor>& client, const std::string& name) {
fpromise::bridge<WakeLease, Error> bridge;
client->TakeWakeLease({name}).Then(
[completer = std::move(bridge.completer)](auto& result) mutable {
if (!result.is_ok()) {
completer.complete_error("Failed to take wake lease");
return;
}
completer.complete_ok(WakeLease(std::move(result->token())));
});
return bridge.consumer.promise();
}
} // namespace examples::power