// 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
