We had a confusing situation before where ServerState was both
a mutable field in ReadOnlyServerEngine, and attached to State
and modified there between commands. The modifications made
during commands by ServerEngine were never propagated back
to ReadOnlyServerEngine.
This splits it up so that RequestListeners is a mutable field
in ReadOnlyServerEngine which is frozen and handed off to
ServerEngine with each request; and ServerState is only the
extra state that ServerEngine sticks on sbt.State, and is only
modified by changing what's on the sbt.State.
We had a confusing situation before where ServerState was both a mutable field in ReadOnlyServerEngine, and attached to State and modified there between commands. The modifications made during commands by ServerEngine were never propagated back to ReadOnlyServerEngine.
This splits it up so that RequestListeners is a mutable field in ReadOnlyServerEngine which is frozen and handed off to ServerEngine with each request; and ServerState is only the extra state that ServerEngine sticks on sbt.State, and is only modified by changing what's on the sbt.State.