compile_error!("MacOs support coming soon");
use super::{std,
SharedMem,
LockType,
LockNone,
SharedMemLockImpl,
};
use std::path::PathBuf;
use std::os::raw::c_void;
use std::os::unix::io::RawFd;
use std::ptr::{null_mut};
use std::mem::size_of;
type Result<T> = std::result::Result<T, Box<std::error::Error>>;
struct SharedData {
lock_ind: u8,
}
pub struct MemMetadata<'a> {
owner: bool,
shared_data: *mut SharedData,
map_name: String,
map_fd: RawFd,
map_size: usize,
pub lock_data: *mut c_void,
pub data: *mut c_void,
pub lock_impl : &'a SharedMemLockImpl,
}
impl<'a> Drop for MemMetadata<'a> {
fn drop(&mut self) {
}
}
pub fn open(mut new_file: SharedMem) -> Result<SharedMem> {
Ok(new_file)
}
pub fn create(mut new_file: SharedMem, lock_type: LockType) -> Result<SharedMem> {
Ok(new_file)
}
fn supported_locktype_info(lock_type: &LockType) -> (usize, usize) {
match lock_type {
&LockType::None => (0, LockNone::size_of()),
}
}
fn supported_locktype_from_ind(index: usize) -> (LockType, usize) {
match index {
0 => (LockType::None, LockNone::size_of()),
_ => unimplemented!("OSX does not support this locktype index..."),
}
}
pub struct Mutex {}
impl SharedMemLockImpl for Mutex {
fn size_of() -> usize {
0
}
fn rlock(&self, lock_ptr: *mut c_void) -> Result<()> {
Ok(())
}
fn wlock(&self, lock_ptr: *mut c_void) -> Result<()> {
Ok(())
}
fn runlock(&self, lock_ptr: *mut c_void) -> () {
}
fn wunlock(&self, lock_ptr: *mut c_void) -> () {
}
}
pub struct RwLock {}
impl SharedMemLockImpl for RwLock {
fn size_of() -> usize {
0
}
fn rlock(&self, lock_ptr: *mut c_void) -> Result<()> {
Ok(())
}
fn wlock(&self, lock_ptr: *mut c_void) -> Result<()> {
Ok(())
}
fn runlock(&self, lock_ptr: *mut c_void) -> () {
}
fn wunlock(&self, lock_ptr: *mut c_void) -> () {
}
}