blob: d0e721ca213f882bb46f1d4851517e1c22096596 [file] [log] [blame]
// Copyright 2023 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 <lib/driver/component/cpp/driver_base.h>
#include <lib/driver/component/cpp/start_completer.h>
#include <zircon/assert.h>
namespace fdf {
Completer::~Completer() {
ZX_ASSERT_MSG(callback_ == std::nullopt, "Completer was not called before going out of scope.");
}
void Completer::operator()(zx::result<> result) {
ZX_ASSERT_MSG(callback_ != std::nullopt, "Cannot call Completer more than once.");
auto callback = std::move(callback_.value());
callback_.reset();
callback(result);
}
} // namespace fdf