diff --git a/src/scheme.rs b/src/scheme.rs
index 8ab8a7b690..57e62b876a 100644
--- a/src/scheme.rs
+++ b/src/scheme.rs
@@ -54,11 +54,16 @@ impl Handle {
..Default::default()
}
}
- pub fn is_listener(&self) -> bool {
- if let Extra::Listener(_) = self.extra {
- true
- } else {
- false
+ pub fn require_listener(&self) -> Result<()> {
+ match self.extra {
+ Extra::Listener(_) => Ok(()),
+ _ => Err(Error::new(EBADF))
+ }
+ }
+ pub fn require_client(&self) -> Result<()> {
+ match self.extra {
+ Extra::Client(_) => Ok(()),
+ _ => Err(Error::new(EBADF))
}
}
}
@@ -138,9 +143,10 @@ impl SchemeBlockMut for IpcScheme {
fn dup(&mut self, id: usize, buf: &[u8]) -> Result