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.