// Copyright 2018 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. // Can't compile this for Zircon userspace yet since libstdc++ isn't available. #ifndef FIT_NO_STD_FOR_ZIRCON_USERSPACE #include <lib/fit/sequencer.h> namespace fit { sequencer::sequencer() { // Capture a new consumer and intentionally abandon its associated // completer so that a promise chained onto the consumer using // |promise_or()| will become immediately runnable. fit::bridge<> bridge; prior_ = std::move(bridge.consumer()); } sequencer::~sequencer() = default; fit::consumer<> sequencer::swap_prior(fit::consumer<> new_prior) { std::lock_guard<std::mutex> lock(mutex_); fit::consumer<> old_prior = std::move(prior_); prior_ = std::move(new_prior); return old_prior; } } // namespace fit #endif // FIT_NO_STD_FOR_ZIRCON_USERSPACE