diff options
author | viettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-28 00:30:04 +0000 |
---|---|---|
committer | viettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-28 00:30:04 +0000 |
commit | 3d58663b00b219889b298b233e0c0e0f80596ed7 (patch) | |
tree | 9a4bdf0e0f48f1af7a083924c2711af9cc7310d1 /mojo/system/waiter_test_utils.cc | |
parent | 82ce871c06a72ffb38f3ddcac1090a2ceed266fb (diff) | |
download | chromium_src-3d58663b00b219889b298b233e0c0e0f80596ed7.zip chromium_src-3d58663b00b219889b298b233e0c0e0f80596ed7.tar.gz chromium_src-3d58663b00b219889b298b233e0c0e0f80596ed7.tar.bz2 |
Initial in-process implementation of some Mojo primitives.
This has an initial in-process implementation of the most basic Mojo primitives:
- MojoClose()
- MojoWait()
- MojoWaitMany()
- MojoCreateMessagePipe()
- MojoWriteMessage()
- MojoReadMessage()
R=darin@chromium.org
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=225801
Review URL: https://codereview.chromium.org/23621056
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@225821 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'mojo/system/waiter_test_utils.cc')
-rw-r--r-- | mojo/system/waiter_test_utils.cc | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/mojo/system/waiter_test_utils.cc b/mojo/system/waiter_test_utils.cc new file mode 100644 index 0000000..37df616 --- /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 |