| Index: mojo/system/waiter_test_utils.cc
|
| diff --git a/mojo/system/waiter_test_utils.cc b/mojo/system/waiter_test_utils.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..37df6167aea9fee9b6fd869b64fe4717b2fcfe41
|
| --- /dev/null
|
| +++ b/mojo/system/waiter_test_utils.cc
|
| @@ -0,0 +1,63 @@
|
| +// Copyright 2013 The Chromium 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 "mojo/system/waiter_test_utils.h"
|
| +
|
| +namespace mojo {
|
| +namespace system {
|
| +namespace test {
|
| +
|
| +SimpleWaiterThread::SimpleWaiterThread(MojoResult* result)
|
| + : base::SimpleThread("waiter_thread"),
|
| + result_(result) {
|
| + waiter_.Init();
|
| + *result_ = -5420734; // Totally invalid result.
|
| +}
|
| +
|
| +SimpleWaiterThread::~SimpleWaiterThread() {
|
| + Join();
|
| +}
|
| +
|
| +void SimpleWaiterThread::Run() {
|
| + *result_ = waiter_.Wait(MOJO_DEADLINE_INDEFINITE);
|
| +}
|
| +
|
| +WaiterThread::WaiterThread(scoped_refptr<Dispatcher> dispatcher,
|
| + MojoWaitFlags wait_flags,
|
| + MojoDeadline deadline,
|
| + MojoResult success_result,
|
| + bool* did_wait_out,
|
| + MojoResult* result_out)
|
| + : base::SimpleThread("waiter_thread"),
|
| + dispatcher_(dispatcher),
|
| + wait_flags_(wait_flags),
|
| + deadline_(deadline),
|
| + success_result_(success_result),
|
| + did_wait_out_(did_wait_out),
|
| + result_out_(result_out) {
|
| + *did_wait_out_ = false;
|
| + *result_out_ = -8542346; // Totally invalid result.
|
| +}
|
| +
|
| +WaiterThread::~WaiterThread() {
|
| + Join();
|
| +}
|
| +
|
| +void WaiterThread::Run() {
|
| + waiter_.Init();
|
| +
|
| + *result_out_ = dispatcher_->AddWaiter(&waiter_,
|
| + wait_flags_,
|
| + success_result_);
|
| + if (*result_out_ != MOJO_RESULT_OK)
|
| + return;
|
| +
|
| + *did_wait_out_ = true;
|
| + *result_out_ = waiter_.Wait(deadline_);
|
| + dispatcher_->RemoveWaiter(&waiter_);
|
| +}
|
| +
|
| +} // namespace test
|
| +} // namespace system
|
| +} // namespace mojo
|
|
|