mirror of https://github.com/rust-lang/rust.git
Handle fallout in librustuv
API Changes: - GetAddrInfoRequest::run() returns Result<Vec<..>, ..> - Process::spawn() returns Result<(.., Vec<..>), ..>
This commit is contained in:
parent
fac0d4e135
commit
fa82ef23b8
|
@ -33,7 +33,7 @@ pub struct GetAddrInfoRequest;
|
||||||
|
|
||||||
impl GetAddrInfoRequest {
|
impl GetAddrInfoRequest {
|
||||||
pub fn run(loop_: &Loop, node: Option<&str>, service: Option<&str>,
|
pub fn run(loop_: &Loop, node: Option<&str>, service: Option<&str>,
|
||||||
hints: Option<ai::Hint>) -> Result<~[ai::Info], UvError> {
|
hints: Option<ai::Hint>) -> Result<Vec<ai::Info>, UvError> {
|
||||||
assert!(node.is_some() || service.is_some());
|
assert!(node.is_some() || service.is_some());
|
||||||
let (_c_node, c_node_ptr) = match node {
|
let (_c_node, c_node_ptr) = match node {
|
||||||
Some(n) => {
|
Some(n) => {
|
||||||
|
@ -134,7 +134,7 @@ fn each_ai_flag(_f: |c_int, ai::Flag|) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Traverse the addrinfo linked list, producing a vector of Rust socket addresses
|
// Traverse the addrinfo linked list, producing a vector of Rust socket addresses
|
||||||
pub fn accum_addrinfo(addr: &Addrinfo) -> ~[ai::Info] {
|
pub fn accum_addrinfo(addr: &Addrinfo) -> Vec<ai::Info> {
|
||||||
unsafe {
|
unsafe {
|
||||||
let mut addr = addr.handle;
|
let mut addr = addr.handle;
|
||||||
|
|
||||||
|
@ -180,6 +180,6 @@ pub fn accum_addrinfo(addr: &Addrinfo) -> ~[ai::Info] {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return addrs.move_iter().collect();
|
addrs
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,8 @@ impl Process {
|
||||||
/// Returns either the corresponding process object or an error which
|
/// Returns either the corresponding process object or an error which
|
||||||
/// occurred.
|
/// occurred.
|
||||||
pub fn spawn(io_loop: &mut UvIoFactory, config: process::ProcessConfig)
|
pub fn spawn(io_loop: &mut UvIoFactory, config: process::ProcessConfig)
|
||||||
-> Result<(Box<Process>, ~[Option<PipeWatcher>]), UvError> {
|
-> Result<(Box<Process>, Vec<Option<PipeWatcher>>), UvError>
|
||||||
|
{
|
||||||
let cwd = config.cwd.map(|s| s.to_c_str());
|
let cwd = config.cwd.map(|s| s.to_c_str());
|
||||||
let mut io = vec![config.stdin, config.stdout, config.stderr];
|
let mut io = vec![config.stdin, config.stdout, config.stderr];
|
||||||
for slot in config.extra_io.iter() {
|
for slot in config.extra_io.iter() {
|
||||||
|
@ -102,7 +103,7 @@ impl Process {
|
||||||
});
|
});
|
||||||
|
|
||||||
match ret {
|
match ret {
|
||||||
Ok(p) => Ok((p, ret_io.move_iter().collect())),
|
Ok(p) => Ok((p, ret_io)),
|
||||||
Err(e) => Err(e),
|
Err(e) => Err(e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -178,7 +178,7 @@ impl IoFactory for UvIoFactory {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_host_addresses(&mut self, host: Option<&str>, servname: Option<&str>,
|
fn get_host_addresses(&mut self, host: Option<&str>, servname: Option<&str>,
|
||||||
hint: Option<ai::Hint>) -> Result<~[ai::Info], IoError> {
|
hint: Option<ai::Hint>) -> Result<Vec<ai::Info>, IoError> {
|
||||||
let r = GetAddrInfoRequest::run(&self.loop_, host, servname, hint);
|
let r = GetAddrInfoRequest::run(&self.loop_, host, servname, hint);
|
||||||
r.map_err(uv_error_to_io_error)
|
r.map_err(uv_error_to_io_error)
|
||||||
}
|
}
|
||||||
|
@ -272,7 +272,7 @@ impl IoFactory for UvIoFactory {
|
||||||
|
|
||||||
fn spawn(&mut self, config: ProcessConfig)
|
fn spawn(&mut self, config: ProcessConfig)
|
||||||
-> Result<(Box<rtio::RtioProcess:Send>,
|
-> Result<(Box<rtio::RtioProcess:Send>,
|
||||||
~[Option<Box<rtio::RtioPipe:Send>>]),
|
Vec<Option<Box<rtio::RtioPipe:Send>>>),
|
||||||
IoError>
|
IoError>
|
||||||
{
|
{
|
||||||
match Process::spawn(self, config) {
|
match Process::spawn(self, config) {
|
||||||
|
|
Loading…
Reference in New Issue