Index: mojo/public/rust/src/system/wait_set.rs |
diff --git a/mojo/public/rust/src/system/wait_set.rs b/mojo/public/rust/src/system/wait_set.rs |
deleted file mode 100644 |
index 12e7cabc3d83f11aa073b3c45b6cd7ecff1b7343..0000000000000000000000000000000000000000 |
--- a/mojo/public/rust/src/system/wait_set.rs |
+++ /dev/null |
@@ -1,155 +0,0 @@ |
-// 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. |
- |
-use std::mem; |
-use std::ptr; |
- |
-use system::ffi; |
-use system::handle; |
-use system::handle::{CastHandle, Handle}; |
-use system::mojo_types; |
-use system::mojo_types::MojoResult; |
- |
-#[repr(u32)] |
-/// Create flags for wait sets |
-pub enum Create { |
- None = 0, |
-} |
- |
-#[repr(u32)] |
-/// Add flags for wait sets |
-pub enum Add { |
- None = 0, |
-} |
- |
-/// This struct represents a handle to a wait set in the Mojo system. |
-/// |
-/// The primary purpose of a wait set is to provide an abstraction for |
-/// efficiently waiting asynchronously (and cooperatively) on a set of |
-/// handles which are registered with it. |
-pub struct WaitSet { |
- handle: handle::UntypedHandle, |
-} |
- |
-impl WaitSet { |
- /// Creates a new WaitSet object in the Mojo system, and returns a wrapper |
- /// for it. If creation fails, returns the result code. |
- pub fn new(flags: mojo_types::CreateFlags) -> Result<WaitSet, MojoResult> { |
- let mut raw_handle: mojo_types::MojoHandle = 0; |
- let opts = ffi::MojoCreateWaitSetOptions { |
- struct_size: mem::size_of::<ffi::MojoCreateWaitSetOptions>() as u32, |
- flags: flags, |
- _align: [], |
- }; |
- let raw_opts = &opts as *const ffi::MojoCreateWaitSetOptions; |
- let r = MojoResult::from_code(unsafe { |
- ffi::MojoCreateWaitSet(raw_opts, &mut raw_handle as *mut mojo_types::MojoHandle) |
- }); |
- if r != MojoResult::Okay { |
- Err(r) |
- } else { |
- Ok(WaitSet { handle: unsafe { handle::acquire(raw_handle) } }) |
- } |
- } |
- |
- /// Adds a handle to the underlying wait set. |
- /// |
- /// The handle that is added may go invalid, at which point the result |
- /// returned from wait_on_set for this handle will be `Cancelled'. |
- /// |
- /// One can pass in a unique cookie value which is used to identify the |
- /// handle in the wait result. Currently there are no supported flags, |
- /// but the argument is kept for future usage. |
- pub fn add(&mut self, |
- handle: &Handle, |
- signals: mojo_types::HandleSignals, |
- cookie: u64, |
- flags: mojo_types::AddFlags) |
- -> MojoResult { |
- let opts = ffi::MojoWaitSetAddOptions { |
- struct_size: mem::size_of::<ffi::MojoWaitSetAddOptions>() as u32, |
- flags: flags, |
- _align: [], |
- }; |
- let raw_opts = &opts as *const ffi::MojoWaitSetAddOptions; |
- MojoResult::from_code(unsafe { |
- ffi::MojoWaitSetAdd(self.handle.get_native_handle(), |
- handle.get_native_handle(), |
- signals, |
- cookie, |
- raw_opts) |
- }) |
- } |
- |
- /// Removes a handle from the underlying wait set by cookie value. |
- pub fn remove(&mut self, cookie: u64) -> MojoResult { |
- MojoResult::from_code(unsafe { ffi::MojoWaitSetRemove(self.get_native_handle(), cookie) }) |
- } |
- |
- /// Waits on this wait set. |
- /// |
- /// The conditions for the wait to end include: |
- /// * A handle has its requested signals satisfied. |
- /// * A handle is determined to never be able to have its requested |
- /// signals satisfied. |
- /// * The deadline expires. |
- /// * This wait set handle becomes invalid (Fatal error in this bindings). |
- /// |
- /// On a successful wait, we return the maximum number of results that could |
- /// possibly be returned (similar to the total number of registered handles). |
- /// Additionally, populates the output vector with the results of each handle |
- /// that completed waiting. |
- /// |
- /// On a failed wait, we return the result code. |
- pub fn wait_on_set(&self, |
- deadline: mojo_types::MojoDeadline, |
- output: &mut Vec<mojo_types::WaitSetResult>) |
- -> Result<u32, MojoResult> { |
- assert!((output.capacity() as u64) <= ((1 as u64) << 32)); |
- let mut num_results = output.capacity() as u32; |
- let mut max_results: u32 = 0; |
- let mut output_ptr = output.as_mut_ptr(); |
- if num_results == 0 { |
- output_ptr = ptr::null_mut(); |
- } |
- let r = MojoResult::from_code(unsafe { |
- ffi::MojoWaitSetWait(self.handle.get_native_handle(), |
- deadline, |
- &mut num_results as *mut u32, |
- output_ptr, |
- &mut max_results as *mut u32) |
- }); |
- unsafe { |
- output.set_len(num_results as usize); |
- } |
- if r == MojoResult::Okay { |
- Ok(max_results) |
- } else { |
- Err(r) |
- } |
- } |
-} |
- |
-impl CastHandle for WaitSet { |
- /// Generates a WaitSet from an untyped handle wrapper |
- /// See mojo::system::handle for information on untyped vs. typed |
- unsafe fn from_untyped(handle: handle::UntypedHandle) -> Self { |
- WaitSet { handle: handle } |
- } |
- |
- /// Consumes this object and produces a plain handle wrapper |
- /// See mojo::system::handle for information on untyped vs. typed |
- fn as_untyped(self) -> handle::UntypedHandle { |
- self.handle |
- } |
-} |
- |
-impl Handle for WaitSet { |
- /// Returns the native handle wrapped by this structure. |
- /// |
- /// See mojo::system::handle for information on handle wrappers |
- fn get_native_handle(&self) -> mojo_types::MojoHandle { |
- self.handle.get_native_handle() |
- } |
-} |