You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
765 B
27 lines
765 B
4 months ago
|
// 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.
|
||
|
|
||
|
#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
|