use parcel::tizen_bundle::Bundle;
use std::ffi::{c_void, c_uint, CStr, CString};
use std::os::raw::c_char;
+use std::os::fd::RawFd;
#[cfg(test)]
pub mod tests;
fn rpc_port_parcel_write_bool(h: *mut c_void, b: bool) -> i32;
fn rpc_port_parcel_write_bundle(h: *mut c_void, bundle: *mut c_void) ->i32;
fn rpc_port_parcel_write_array_count(h: *mut c_void, count: i32) -> i32;
+ fn rpc_port_parcel_write_fd(h: *mut c_void, fd: i32) -> i32;
fn rpc_port_parcel_read_byte(h: *mut c_void, b: *mut i8) -> i32;
fn rpc_port_parcel_read_int16(h: *mut c_void, i: *mut i16) -> i32;
fn rpc_port_parcel_read_int32(h: *mut c_void, i: *mut i32) -> i32;
fn rpc_port_parcel_read_array_count(h: *mut c_void, count: *mut i32) -> i32;
fn rpc_port_parcel_burst_read(h: *mut c_void, buf: *mut u8, size: u32) -> i32;
fn rpc_port_parcel_burst_write(h: *mut c_void, buf: *const u8, size: u32) -> i32;
+ fn rpc_port_parcel_read_fd(h: *mut c_void, fd: *mut i32) -> i32;
fn rpc_port_parcel_reserve(h: *mut c_void, size: u32) -> i32;
fn rpc_port_parcel_create_from_parcel(h: *mut *mut c_void, origin_parcel: *mut c_void,
start_pos: u32, size: u32) -> i32;
);
}
+ pub fn write_fd(&self, fd: RawFd) {
+ let ret = unsafe { rpc_port_parcel_write_fd(self.handle, fd) };
+ assert_eq!(ret, 0, "failed at rpc_port_parcel_write_fd : {}", ret);
+ }
+
pub fn read_i8(&self) -> i8 {
let mut x: i8 = 0;
let b = &mut x as *mut i8;
count as usize
}
+ pub fn read_fd(&self) -> RawFd {
+ let mut fd: i32 = 0;
+ let fd_ptr = &mut fd as *mut i32;
+ let ret = unsafe { rpc_port_parcel_read_fd(self.handle, fd_ptr) };
+ assert_eq!(
+ ret, 0,
+ "failed at rpc_port_parcel_read_fd : {}",
+ ret
+ );
+ fd
+ }
+
pub fn read(&self, buf: &mut [u8]) {
let ptr = buf.as_mut_ptr();
let ret = unsafe { rpc_port_parcel_burst_read(self.handle, ptr, buf.len() as u32) };