mirror of
https://github.com/Nanaloveyuki/BitLogger.git
synced 2026-07-31 15:34:58 +00:00
✨ consolidate async and native runtime updates
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "Nanaloveyuki/BitLogger",
|
"name": "Nanaloveyuki/BitLogger",
|
||||||
"version": "0.5.2",
|
"version": "0.5.3",
|
||||||
"deps": {
|
"deps": {
|
||||||
"maria/json_parser": "0.1.1",
|
"maria/json_parser": "0.1.1",
|
||||||
"moonbitlang/async": "0.19.0"
|
"moonbitlang/async": "0.19.0"
|
||||||
|
|||||||
@@ -254,11 +254,16 @@ pub async fn[S] AsyncLogger::log(
|
|||||||
} else {
|
} else {
|
||||||
match self.overflow {
|
match self.overflow {
|
||||||
AsyncOverflowPolicy::Blocking => {
|
AsyncOverflowPolicy::Blocking => {
|
||||||
self.queue.put(rec) catch {
|
let accepted = (async fn() -> Bool raise {
|
||||||
err if err is AsyncLoggerClosed => ()
|
self.queue.put(rec)
|
||||||
|
true
|
||||||
|
})() catch {
|
||||||
|
err if err is AsyncLoggerClosed => false
|
||||||
err => raise err
|
err => raise err
|
||||||
}
|
}
|
||||||
self.pending_count.val += 1
|
if accepted {
|
||||||
|
self.pending_count.val += 1
|
||||||
|
}
|
||||||
}
|
}
|
||||||
AsyncOverflowPolicy::DropOldest | AsyncOverflowPolicy::DropNewest => {
|
AsyncOverflowPolicy::DropOldest | AsyncOverflowPolicy::DropNewest => {
|
||||||
self.dropped_count.val += 1
|
self.dropped_count.val += 1
|
||||||
|
|||||||
@@ -35,9 +35,9 @@ fn string_to_c_bytes(str : String) -> Bytes {
|
|||||||
type NativeFileHandle
|
type NativeFileHandle
|
||||||
|
|
||||||
#borrow(path, mode)
|
#borrow(path, mode)
|
||||||
extern "C" fn file_open_ffi(path : Bytes, mode : Bytes) -> NativeFileHandle = "fopen"
|
extern "C" fn file_open_ffi(path : Bytes, mode : Bytes) -> NativeFileHandle = "bitlogger_file_open"
|
||||||
|
|
||||||
extern "C" fn file_is_null_ffi(handle : NativeFileHandle) -> Bool = "moonbitlang_async_pointer_is_null"
|
extern "C" fn file_is_null_ffi(handle : NativeFileHandle) -> Bool = "bitlogger_pointer_is_null"
|
||||||
|
|
||||||
#borrow(buffer)
|
#borrow(buffer)
|
||||||
extern "C" fn file_write_ffi(
|
extern "C" fn file_write_ffi(
|
||||||
@@ -45,21 +45,28 @@ extern "C" fn file_write_ffi(
|
|||||||
size : Int,
|
size : Int,
|
||||||
count : Int,
|
count : Int,
|
||||||
handle : NativeFileHandle,
|
handle : NativeFileHandle,
|
||||||
) -> Int = "fwrite"
|
) -> Int = "bitlogger_file_write"
|
||||||
|
|
||||||
extern "C" fn file_flush_ffi(handle : NativeFileHandle) -> Int = "fflush"
|
extern "C" fn file_flush_ffi(handle : NativeFileHandle) -> Int = "bitlogger_file_flush"
|
||||||
|
|
||||||
extern "C" fn file_close_ffi(handle : NativeFileHandle) -> Int = "fclose"
|
extern "C" fn file_close_ffi(handle : NativeFileHandle) -> Int = "bitlogger_file_close"
|
||||||
|
|
||||||
extern "C" fn file_seek_ffi(handle : NativeFileHandle, offset : Int, origin : Int) -> Int = "fseek"
|
extern "C" fn file_seek_ffi(
|
||||||
|
handle : NativeFileHandle,
|
||||||
|
offset : Int,
|
||||||
|
origin : Int,
|
||||||
|
) -> Int = "bitlogger_file_seek"
|
||||||
|
|
||||||
extern "C" fn file_tell_ffi(handle : NativeFileHandle) -> Int = "ftell"
|
extern "C" fn file_tell_ffi(handle : NativeFileHandle) -> Int = "bitlogger_file_tell"
|
||||||
|
|
||||||
#borrow(from_path, to_path)
|
#borrow(from_path, to_path)
|
||||||
extern "C" fn file_rename_ffi(from_path : Bytes, to_path : Bytes) -> Int = "rename"
|
extern "C" fn file_rename_ffi(
|
||||||
|
from_path : Bytes,
|
||||||
|
to_path : Bytes,
|
||||||
|
) -> Int = "bitlogger_file_rename"
|
||||||
|
|
||||||
#borrow(path)
|
#borrow(path)
|
||||||
extern "C" fn file_remove_ffi(path : Bytes) -> Int = "remove"
|
extern "C" fn file_remove_ffi(path : Bytes) -> Int = "bitlogger_file_remove"
|
||||||
|
|
||||||
pub struct FileHandle {
|
pub struct FileHandle {
|
||||||
path : String
|
path : String
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import {
|
|||||||
}
|
}
|
||||||
|
|
||||||
options(
|
options(
|
||||||
|
"native-stub": [ "stub.c" ],
|
||||||
targets: {
|
targets: {
|
||||||
"file_backend_native.mbt": [ "native", "llvm" ],
|
"file_backend_native.mbt": [ "native", "llvm" ],
|
||||||
"file_backend_stub.mbt": [ "js", "wasm", "wasm-gc" ],
|
"file_backend_stub.mbt": [ "js", "wasm", "wasm-gc" ],
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifndef _CRT_SECURE_NO_WARNINGS
|
||||||
|
#define _CRT_SECURE_NO_WARNINGS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int32_t bitlogger_pointer_is_null(void *ptr) {
|
||||||
|
return ptr == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *bitlogger_file_open(const char *path, const char *mode) {
|
||||||
|
#if defined(__clang__)
|
||||||
|
#pragma clang diagnostic push
|
||||||
|
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
|
||||||
|
#endif
|
||||||
|
return fopen(path, mode);
|
||||||
|
#if defined(__clang__)
|
||||||
|
#pragma clang diagnostic pop
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t bitlogger_file_write(const char *buffer, int32_t size, int32_t count, void *handle) {
|
||||||
|
return (int32_t)fwrite(buffer, (size_t)size, (size_t)count, (FILE *)handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t bitlogger_file_flush(void *handle) {
|
||||||
|
return fflush((FILE *)handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t bitlogger_file_close(void *handle) {
|
||||||
|
return fclose((FILE *)handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t bitlogger_file_seek(void *handle, int32_t offset, int32_t origin) {
|
||||||
|
return fseek((FILE *)handle, offset, origin);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t bitlogger_file_tell(void *handle) {
|
||||||
|
long position = ftell((FILE *)handle);
|
||||||
|
return position < 0 ? -1 : (int32_t)position;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t bitlogger_file_rename(const char *from_path, const char *to_path) {
|
||||||
|
return rename(from_path, to_path);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t bitlogger_file_remove(const char *path) {
|
||||||
|
return remove(path);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user