All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.ru.casperix.signals.concrete.UpdateSignal.kt Maven / Gradle / Ivy

package ru.casperix.signals.concrete

import ru.casperix.signals.api.AbstractSignal

/**
 * 	Аналогичен [StorageSignal]
 * 	Показывает старое значение
 * 	Не срабатывает при подписке. 
 * 	Игнорирует эквивалентные значения
 */
class UpdateSignal(first: Event) : AbstractSignal<(Event, Event) -> Unit, Slot>(SlotCollection()), UpdatePromise {
	var value: Event = first
		set(value: Event) {
			val last = field
			if (last == value) return
			field = value

			forEach { listener ->
				listener(last, value)
			}
		}

	override fun then(listener: (Event, Event) -> Unit): Slot {
		return super.then(listener)
	}

//	override fun get(): Event {
//		return value
//	}

	override fun set(value: Event) {
		this.value = value
	}
}







© 2015 - 2025 Weber Informatics LLC | Privacy Policy