use crate::{Stream, ffi};
use glib::prelude::*;
use glib::translate::*;
use std::ffi::c_void;
use std::ptr;
pub trait StreamExtManual: IsA<Stream> + 'static {
#[doc(alias = "mirage_stream_read")]
fn read(&self, buffer: &mut [u8]) -> Result<isize, glib::Error> {
let mut error = ptr::null_mut();
unsafe {
let ret = ffi::mirage_stream_read(
self.as_ref().to_glib_none().0,
buffer.as_mut_ptr() as *mut c_void,
buffer.len(),
&mut error,
);
if error.is_null() {
Ok(ret)
} else {
Err(from_glib_full(error))
}
}
}
#[doc(alias = "mirage_stream_read")]
fn write(&self, buffer: &[u8]) -> Result<isize, glib::Error> {
let mut error = ptr::null_mut();
unsafe {
let ret = ffi::mirage_stream_write(
self.as_ref().to_glib_none().0,
mut_override(buffer.as_ptr()) as *mut c_void,
buffer.len(),
&mut error,
);
if error.is_null() {
Ok(ret)
} else {
Err(from_glib_full(error))
}
}
}
}
impl<O: IsA<Stream>> StreamExtManual for O {}