use libc::c_void;
use crate::util::{util::ref_free_drop, go_type::FFIError};
use self::ffi::nosqldb_logging_config_new;
use super::logger::NosqldbLogger;
pub(crate) mod ffi {
use std::mem;
use crate::{nosqldb::log::logger::{NosqldbLogger, NosqldbLoggerPtr}, util::{util::{ffi::FfiNosqldbPtrAndErrorNewReturn, c_char_to_str}, go_type::FFIError}};
use super::NosqldbLoggingConfig;
extern "C" {
pub fn ffi_nosqldb_logging_config_new(ioWritter_ptr: NosqldbLoggerPtr) -> FfiNosqldbPtrAndErrorNewReturn;
}
pub fn nosqldb_logging_config_new (
logger: NosqldbLogger,
) -> Result<NosqldbLoggingConfig, FFIError> {
let FfiNosqldbPtrAndErrorNewReturn{ ptr: logging_config_ptr, go_error_ptr } = unsafe { ffi_nosqldb_logging_config_new(logger.nosqldb_logger) };
mem::forget(logger);
if go_error_ptr.is_null() {
Ok(NosqldbLoggingConfig { nosqldb_logging_config: logging_config_ptr })
} else {
Err(FFIError::GoError(c_char_to_str(go_error_ptr)?))
}
}
}
pub(crate) type NosqldbLoggingConfigPtr = *const c_void;
pub struct NosqldbLoggingConfig {
pub(crate) nosqldb_logging_config: NosqldbLoggingConfigPtr,
}
impl NosqldbLoggingConfig {
pub fn new (logger: NosqldbLogger) -> Result<Self, FFIError> {
nosqldb_logging_config_new(logger)
}
}
impl Drop for NosqldbLoggingConfig {
fn drop(&mut self) {
ref_free_drop(self.nosqldb_logging_config);
}
}