AtomicStore

abstract class AtomicStore<V> : StoreBase<V> , Loggable(source)

使用 AtomicReference 为缓存,io.github.autotweaker.api.storage.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 相互隔离。

Functions

Link copied to clipboard

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

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

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

Link copied to clipboard
fun shutdown()

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