AtomicStore

使用 AtomicReference 为缓存,io.github.autotweaker.api.store.JsonStore 为持久化服务的存储基类。

AtomicStore 的优点是无锁,缺点是 update 块内不能挂起、不能有副作用。

V 应为一个不可变的类型,例如一个 包含 var 的数据类,或 java.util.UUID 这类不可直接变更值的类型,反例:MutableCollection。如果需要包装可变类型,请使用 MutableStore

由于无锁,为了避免并发场景下可能的缓存与硬盘不同步,缓存会在后台异步保存,每半秒检查一次是否需要保存。

请确保在程序关闭前调用 shutdown 方法,可以注册一个 io.github.autotweaker.api.hook.ShutdownHook 来调用 shutdown

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
val Loggable.log: Logger

获取 Logger,请遵循日志规范,不要污染程序日志。

Link copied to clipboard

获取 AutoTweaker 提供的 JsonStore。 同一类获取到的 JsonStore 始终相同,不同类获取到的 JsonStore 相互隔离。

Link copied to clipboard

获取 AutoTweaker 提供的 TraceRecorder,自身作为 origin

Functions

Link copied to clipboard

打印一条用于临时调试的 error 级别日志,特殊的命名便于通过自动化脚本扫描。

Link copied to clipboard
fun Loggable.scope(io: IO? = null): CoroutineScope

快速创建一个协程作用域,并在崩溃时记录日志。

Link copied to clipboard
fun shutdown()

取消用于保存的协程,然后检查是否需要保存,若需要,执行最后一次保存。