mirror of
https://github.com/tursom/TursomServer.git
synced 2025-03-14 03:40:06 +08:00
update delegations
This commit is contained in:
parent
6f05cecb49
commit
6802e09f83
@ -4,7 +4,7 @@ import cn.tursom.core.uncheckedCast
|
||||
import java.util.concurrent.TimeUnit
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
class ExpirableMutableDelegatedField<in T, V : Any>(
|
||||
class ExpirableMutableDelegatedField<in T, V>(
|
||||
override val delegatedField: MutableDelegatedField<T, V>,
|
||||
val expireMS: Long,
|
||||
) : MutableDelegatedField<T, V?> by delegatedField.uncheckedCast(),
|
||||
@ -23,24 +23,21 @@ class ExpirableMutableDelegatedField<in T, V : Any>(
|
||||
|
||||
override fun setValue(thisRef: T, property: KProperty<*>, value: V?) {
|
||||
if (value != null) {
|
||||
delegatedField.setValue(value)
|
||||
delegatedField.setValue(thisRef, property, value)
|
||||
setTime = System.currentTimeMillis()
|
||||
}
|
||||
}
|
||||
|
||||
override fun valueOnSet(thisRef: T, property: KProperty<*>, value: V?, oldValue: V?) {
|
||||
if (value != null) {
|
||||
setTime = System.currentTimeMillis()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun <T, V : Any> MutableDelegatedField<T, V>.expirable(
|
||||
fun <T, V> MutableDelegatedField<T, V>.expirable(
|
||||
expireTime: Long,
|
||||
timeUnit: TimeUnit = TimeUnit.MILLISECONDS,
|
||||
): MutableDelegatedField<T, V?> {
|
||||
return ExpirableMutableDelegatedField(this, timeUnit.toMillis(expireTime))
|
||||
}
|
||||
|
||||
@JvmName("expirableTV?")
|
||||
fun <T, V : Any> MutableDelegatedField<T, V?>.expirable(
|
||||
expireTime: Long,
|
||||
timeUnit: TimeUnit = TimeUnit.MILLISECONDS,
|
||||
): MutableDelegatedField<T, V?> {
|
||||
return ExpirableMutableDelegatedField(uncheckedCast(), timeUnit.toMillis(expireTime))
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
package cn.tursom.core.delegation
|
||||
|
||||
import cn.tursom.core.final
|
||||
import cn.tursom.core.getFieldForAll
|
||||
import cn.tursom.core.uncheckedCast
|
||||
import java.lang.reflect.Field
|
||||
@ -10,6 +11,7 @@ class ReflectionDelegatedField<in T, V>(
|
||||
) : MutableDelegatedField<T, V> {
|
||||
init {
|
||||
field.isAccessible = true
|
||||
field.final = false
|
||||
}
|
||||
|
||||
override fun getValue(): V = field.get(receiver).uncheckedCast()
|
||||
@ -18,6 +20,10 @@ class ReflectionDelegatedField<in T, V>(
|
||||
field.set(receiver, value)
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "ReflectionDelegatedField(receiver=$receiver, field=$field)"
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun <T : Any, V> T.superField(
|
||||
fieldName: String,
|
||||
@ -31,6 +37,7 @@ class ReflectionDelegatedField<in T, V>(
|
||||
return ReflectionDelegatedField(this, field)
|
||||
}
|
||||
|
||||
@Suppress("UNUSED_PARAMETER")
|
||||
fun <T, V> T.field(
|
||||
field: Field,
|
||||
type: V,
|
||||
@ -38,6 +45,7 @@ class ReflectionDelegatedField<in T, V>(
|
||||
return ReflectionDelegatedField(this, field)
|
||||
}
|
||||
|
||||
@Suppress("UNUSED_PARAMETER")
|
||||
inline fun <T, V> T.field(
|
||||
field: Field,
|
||||
type: () -> V,
|
||||
@ -46,4 +54,3 @@ class ReflectionDelegatedField<in T, V>(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user