| OLD | NEW |
| (Empty) |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #[macro_use] | |
| 6 mod macros { | |
| 7 /// This macro must be used at the top-level in any | |
| 8 /// Rust Mojo application. It defines and abstracts away the | |
| 9 /// hook needed by Mojo in order to set up the basic | |
| 10 /// functionality (see mojo::system::ffi). It must take the | |
| 11 /// name of a function who returns a MojoResult and takes | |
| 12 /// exactly one argument: a mojo::handle::Handle, or on in | |
| 13 /// other words, an untyped handle. | |
| 14 #[macro_export] | |
| 15 macro_rules! set_mojo_main { | |
| 16 ( $fn_main:ident ) => { | |
| 17 #[allow(bad_style)] | |
| 18 #[no_mangle] | |
| 19 pub fn MojoMain(app_request_handle: mojo::system::MojoHandle) -> moj
o::MojoResult | |
| 20 { | |
| 21 use std::panic; | |
| 22 use mojo::system::CastHandle; | |
| 23 let handle = unsafe { | |
| 24 mojo::system::message_pipe::MessageEndpoint::from_untyped( | |
| 25 mojo::system::acquire(app_request_handle) | |
| 26 ) | |
| 27 }; | |
| 28 let result = panic::catch_unwind(|| { | |
| 29 $fn_main(handle) | |
| 30 }); | |
| 31 match result { | |
| 32 Ok(value) => value, | |
| 33 Err(_) => { | |
| 34 mojo::MojoResult::Aborted | |
| 35 }, | |
| 36 } | |
| 37 } | |
| 38 } | |
| 39 } | |
| 40 | |
| 41 /// This macro assists in generating flags for | |
| 42 /// functions and methods found in mojo::system::message_pipe. | |
| 43 /// | |
| 44 /// See mojo::system::message_pipe for the available flags | |
| 45 /// that may be passed. | |
| 46 /// | |
| 47 /// # Examples | |
| 48 /// | |
| 49 /// # mpflags!(Create::None); | |
| 50 /// # mpflags!(Read::MayDiscard); | |
| 51 #[macro_export] | |
| 52 macro_rules! mpflags { | |
| 53 ( $( $flag:path ),* ) => {{ | |
| 54 use $crate::system::message_pipe::*; | |
| 55 $( | |
| 56 ($flag as u32) | |
| 57 )|* | |
| 58 }} | |
| 59 } | |
| 60 | |
| 61 /// This macro assists in generating flags for | |
| 62 /// functions and methods found in mojo::system::data_pipe. | |
| 63 /// | |
| 64 /// See mojo::system::data_pipe for the available flags | |
| 65 /// that may be passed. | |
| 66 /// | |
| 67 /// # Examples | |
| 68 /// | |
| 69 /// # dpflags!(Create::None); | |
| 70 /// # dpflags!(Read::AllOrNone, Read::Discard); | |
| 71 #[macro_export] | |
| 72 macro_rules! dpflags { | |
| 73 ( $( $flag:path ),* ) => {{ | |
| 74 use $crate::system::data_pipe::*; | |
| 75 $( | |
| 76 ($flag as u32) | |
| 77 )|* | |
| 78 }} | |
| 79 } | |
| 80 | |
| 81 /// This macro assists in generating flags for | |
| 82 /// functions and methods found in mojo::system::shared_buffer. | |
| 83 /// | |
| 84 /// See mojo::system::shared_buffer for the available flags | |
| 85 /// that may be passed. | |
| 86 /// | |
| 87 /// # Examples | |
| 88 /// | |
| 89 /// # sbflags!(Create::None); | |
| 90 /// # sbflags!(Map::None); | |
| 91 #[macro_export] | |
| 92 macro_rules! sbflags { | |
| 93 ( $( $flag:path ),* ) => {{ | |
| 94 use $crate::system::shared_buffer::*; | |
| 95 $( | |
| 96 ($flag as u32) | |
| 97 )|* | |
| 98 }} | |
| 99 } | |
| 100 | |
| 101 /// This macro assists in generating flags for | |
| 102 /// functions and methods found in mojo::system::wait_set. | |
| 103 /// | |
| 104 /// See mojo::system::wait_set for the available flags | |
| 105 /// that may be passed. | |
| 106 /// | |
| 107 /// # Examples | |
| 108 /// | |
| 109 /// # wsflags!(Create::None); | |
| 110 /// # wsflags!(Add::None); | |
| 111 #[macro_export] | |
| 112 macro_rules! wsflags { | |
| 113 ( $( $flag:path ),* ) => {{ | |
| 114 use $crate::system::wait_set::*; | |
| 115 $( | |
| 116 ($flag as u32) | |
| 117 )|* | |
| 118 }} | |
| 119 } | |
| 120 | |
| 121 /// This macro assists in generating MojoSignals to be | |
| 122 /// used in wait() and wait_many(), part of mojo::system::core. | |
| 123 /// | |
| 124 /// See mojo::system::handle for the available signals | |
| 125 /// that may be checked for by wait() and wait_many(). | |
| 126 /// | |
| 127 /// # Examples | |
| 128 /// | |
| 129 /// # signals!(Signals::Readable, Signals::Writable); | |
| 130 /// # signals!(Signals::PeerClosed); | |
| 131 #[macro_export] | |
| 132 macro_rules! signals { | |
| 133 ( $( $flag:path ),* ) => {{ | |
| 134 use $crate::system::Signals; | |
| 135 $crate::system::HandleSignals::new( | |
| 136 $( | |
| 137 ($flag as u32) | |
| 138 )|* | |
| 139 ) | |
| 140 }} | |
| 141 } | |
| 142 } | |
| 143 | |
| 144 #[macro_use] | |
| 145 pub mod bindings; | |
| 146 pub mod system; | |
| 147 | |
| 148 pub use system::MojoResult; | |
| OLD | NEW |