use FmodFile;
use ffi::FMOD_ASYNCREADINFO;
use libc;
pub struct AsyncReadInfo {
pub handle : FmodFile,
pub offset : u32,
pub sizebytes : u32,
pub priority : u32,
pub buffer : Vec<u8>,
pub result : ::Status,
#[doc(hidden)]
ffi: *mut ffi::FMOD_ASYNCREADINFO,
}
impl AsyncReadInfo {
#[doc(hidden)]
pub fn new(a: *mut ffi::FMOD_ASYNCREADINFO) -> AsyncReadInfo {
unsafe {
AsyncReadInfo {
handle: file::from_ffi((*a).handle),
offset: (*a).offset,
sizebytes: (*a).sizebytes,
priority: (*a).priority,
buffer: Vec::new(),
result: (*a).result,
}
}
}
#[doc(hidden)]
pub fn to_ffi(self) -> *mut ffi::FMOD_ASYNCREADINFO {
let mut out = self.ffi;
unsafe {
(*out).offset = self.offset;
(*out).sizebytes = self.sizebytes;
(*out).priority = self.priority;
(*out).buffer = ::libc::malloc(self.buffer.len());
for (pos, i) in self.buffer.iter().enumerate() {
*(out.offset(pos)) = i;
}
(*out).bytesread = self.buffer.len();
(*out).result = self.result;
}
out
}
}