// Copyright 2016 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 "ipc/mojo_event.h" namespace IPC { MojoEvent::MojoEvent() { mojo::MessagePipe pipe; signal_handle_ = std::move(pipe.handle0); wait_handle_ = std::move(pipe.handle1); } MojoEvent::~MojoEvent() {} void MojoEvent::Signal() { base::AutoLock lock(lock_); if (is_signaled_) return; is_signaled_ = true; MojoResult rv = mojo::WriteMessageRaw( signal_handle_.get(), nullptr, 0, nullptr, 0, MOJO_WRITE_MESSAGE_FLAG_NONE); CHECK_EQ(rv, MOJO_RESULT_OK); } void MojoEvent::Reset() { base::AutoLock lock(lock_); if (!is_signaled_) return; is_signaled_ = false; MojoResult rv = mojo::ReadMessageRaw( wait_handle_.get(), nullptr, nullptr, nullptr, nullptr, MOJO_READ_MESSAGE_FLAG_NONE); CHECK_EQ(rv, MOJO_RESULT_OK); } } // namespace IPC