A marker trait for events that maintain a cache.
A marker trait for events that maintain a cache. Events mixing in this trait are
guaranteed to participate in the pullUpdate
phase, even if no live observer is
attached to them.
Event
is not sealed in order to allow you define traits inheriting from it, while the concrete
implementations should extend either of Event.Constant
or Event.Node
(which itself is sealed and
split into Event.Invariant
and Event.Mutating
.
XXX TODO -- this documentation is outdated.
XXX TODO -- this documentation is outdated.
An Event.Node
is most similar to EScala's EventNode
class. It represents an observable
object and can also act as an observer itself. It adds the Reactor
functionality in the
form of a proxy, forwarding to internally stored Targets
. It also provides a final
implementation of the Writable
and Disposable
traits, asking sub classes to provide
methods writeData
and disposeData
. That way it is ensured that the sealed Reactor
trait
is written first as the Targets
stub, providing a means for partial deserialization during
the push phase of event propagation.
This trait also implements equals
and hashCode
in terms of the id
inherited from the
targets.
An abstract trait unifying invariant and mutating targets.
An abstract trait unifying invariant and mutating targets. This object is responsible
for keeping track of the dependents of an event source which is defined as the outer
object, sharing the same id
as its targets. As a Reactor
, it has a method to
propagate
a fired event.