Référence
ModControl
Baux de recette, commandes temporaires et réponses du mod.
Contexte d’utilisation
| Module | Package | Source SDK |
|---|---|---|
| Kotlin/JVM | fr.nimby.sdk | kotlin-client/src/main/kotlin/fr/nimby/sdk/ModControl.kt |
Signatures extraites de la version 0.8.0-alpha.1. Les paramètres, leurs valeurs par défaut et les propriétés de constructeur sont conservés. Les corps des méthodes ne font pas partie de cette référence.
ControlOperation
enum class ControlOperation(val code: Int) {
Status(0), Acquire(1), Renew(2), Release(3), ForceSignal(4), RestoreSignal(5),
Train(6), RestoreTrain(7), Setting(8), RestoreSetting(9), Clear(10), ReadSignal(11), ReadTrain(12)
}Protocol values only; aspect codes and setting indices belong to the mod.
TrainControlMode
enum class TrainControlMode(val code: Int) {
SpeedLimit(0), PhysicalClearance(1), Stop(2)
}TrainControlState
enum class TrainControlState {
Absent, AwaitingExit, Active, Completed, Cancelled
}ControlRequest
data class ControlRequest(
val operation: ControlOperation, val owner: Long = 0, val generation: Long = 0,
val leaseMillis: Int = 0, val objectId: Long = 0, val exitSignal: Long = 0,
val speedMps: Double = 0.0, val mode: TrainControlMode = TrainControlMode.SpeedLimit,
val releaseByRear: Boolean = false, val value: Int = 0, val settingIndex: Int = 0
)ControlResponse
data class ControlResponse(
val capabilities: Int, val generation: Long, val remainingMillis: Long,
val signalCount: Int, val trainCount: Int, val settingCount: Int,
val active: Int, val aspect: Int, val reason: Int,
val speedMps: Double, val exitSignal: Long, val detail: String
)Counts describe requested overlays. ReadSignal reads the last evaluated decision; ReadTrain.active is [TrainControlState.ordinal], not a permission.
ModControlSession
class ModControlSession : AutoCloseableExplicit recipe lease. No background renewals and no automatic retries. Expiration relinquishes temporary overrides. After a transport failure, inspect status and observations before deciding on another mutation. Construction réservée au SDK : utilisez la fonction de création ou le contexte fourni.
ModControlSession.modId
val modId: StringModControlSession.owner
val owner: LongModControlSession.generation
val generation: LongModControlSession.renew
@Synchronized fun renew(leaseMillis: Int = 5000) = send(ControlOperation.Renew) { it.copy(leaseMillis = leaseMillis) }ModControlSession.forceSignal
@Synchronized fun forceSignal(signal: Long, aspect: Int) = send(ControlOperation.ForceSignal) { it.copy(objectId = signal, value = aspect) }ModControlSession.restoreSignal
@Synchronized fun restoreSignal(signal: Long) = send(ControlOperation.RestoreSignal) { it.copy(objectId = signal) }ModControlSession.setSetting
@Synchronized fun setSetting(signal: Long, index: Int, value: Boolean) = send(ControlOperation.Setting) {ModControlSession.restoreSetting
@Synchronized fun restoreSetting(signal: Long, index: Int) = send(ControlOperation.RestoreSetting) { it.copy(objectId = signal, settingIndex = index) }ModControlSession.constrainTrain
exitSignal: Long = 0, releaseByRear: Boolean = false) = send(ControlOperation.Train) {ModControlSession.restoreTrain
@Synchronized fun restoreTrain(train: Long) = send(ControlOperation.RestoreTrain) { it.copy(objectId = train) }ModControlSession.readSignal
@Synchronized fun readSignal(signal: Long) = send(ControlOperation.ReadSignal) { it.copy(objectId = signal) }ModControlSession.readTrain
@Synchronized fun readTrain(train: Long) = send(ControlOperation.ReadTrain) { it.copy(objectId = train) }ModControlSession.clear
@Synchronized fun clear() = send(ControlOperation.Clear)ModControlSession.close
@Synchronized override fun close()