use crate::util::go_type::FFIError;
use crate::util::go_type::NosqldbTableLimitsPtr;
use crate::util::util::ref_free_drop;
use self::ffi::nosqldb_table_limits_new;
use self::ffi::nosqldb_table_limits_set;
pub(crate) mod ffi {
use std::ffi::c_uint;
use crate::util::{go_type::{NosqldbTableLimitsPtr, FFIError, GoErrorPtr}, util::c_char_to_str};
use super::{NosqldbTableLimits, NosqldbTableLimitsChild};
extern "C" {
fn ffi_nosqldb_table_limits_new() -> NosqldbTableLimitsPtr;
}
pub fn nosqldb_table_limits_new(
) -> Result<NosqldbTableLimits, FFIError> {
let nosqldb_table_limits_ptr: NosqldbTableLimitsPtr = unsafe { ffi_nosqldb_table_limits_new() };
Ok(NosqldbTableLimits{ nosqldb_table_limits_ptr })
}
extern "C" {
fn ffi_nosqldb_table_limits_set(tlmts: NosqldbTableLimitsPtr, key: c_uint, value: c_uint) -> GoErrorPtr;
}
pub fn nosqldb_table_limits_set(
tlmts: &mut NosqldbTableLimits,
key: NosqldbTableLimitsChild,
value: c_uint,
) -> Result<(), FFIError> {
let err = unsafe { ffi_nosqldb_table_limits_set(tlmts.nosqldb_table_limits_ptr, key as c_uint, value as c_uint) };
if err.is_null() {
Ok(())
} else {
Err(FFIError::GoError(c_char_to_str(err)?))
}
}
}
#[derive(Debug)]
pub struct NosqldbTableLimits {
pub(crate) nosqldb_table_limits_ptr: NosqldbTableLimitsPtr,
}
impl NosqldbTableLimits {
pub fn new () -> Result<Self, FFIError> {
nosqldb_table_limits_new()
}
pub fn set (&mut self, key: NosqldbTableLimitsChild, value: u32) -> Result<(), FFIError> {
nosqldb_table_limits_set(self, key, value)
}
}
impl Drop for NosqldbTableLimits {
fn drop(&mut self) {
ref_free_drop(self.nosqldb_table_limits_ptr);
}
}
pub enum NosqldbTableLimitsChild {
ReadUnits,
WriteUnits,
StorageGB,
}