From a85dbad569afee23fa779cfff1b5bc5df078afc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Pit-Claudel?= <clement.pit-claudel@epfl.ch> Date: Sat, 30 Nov 2024 19:46:57 +0100 Subject: [PATCH] server: Remove Tick event encoder --- .../cs214/webapp/server/StateMachine.scala | 26 +++++++------------ 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/jvm/src/main/scala/cs214/webapp/server/StateMachine.scala b/jvm/src/main/scala/cs214/webapp/server/StateMachine.scala index fb6f308..cbff790 100644 --- a/jvm/src/main/scala/cs214/webapp/server/StateMachine.scala +++ b/jvm/src/main/scala/cs214/webapp/server/StateMachine.scala @@ -74,23 +74,15 @@ abstract class ClockDrivenStateMachine[Event, State, View] */ val clockDrivenWire: AppWire[Event, View] - override object wire extends AppWire[Either[Tick, Event], View]: - override object eventFormat extends WireFormat[Either[Tick, Event]]: - override def decode(json: ujson.Value): Try[Either[Tick, Event]] = - Try: - val isClockEvent = - json.objOpt - .flatMap(_.get(ClockDrivenStateMachine.CLOCK_EVENT_HEADER)) - .exists(_.bool) + override object wire extends ClockDrivenWire(clockDrivenWire) - if isClockEvent then Left(TickEventFormat.decode(json.obj.get("tick").get).get) - else Right(clockDrivenWire.eventFormat.decode(json).get) +private class ClockDrivenWire[Event, View](wire: AppWire[Event, View]) extends AppWire[Either[Tick, Event], View]: + override object eventFormat extends WireFormat[Either[Tick, Event]]: + override def decode(json: ujson.Value): Try[Either[Tick, Event]] = Try: + Right(wire.eventFormat.decode(json).get) - override def encode(t: Either[Tick, Event]): ujson.Value = - throw IllegalStateException("This shouldn't be used. Please use the ScalApp's wire instead.") + override def encode(t: Either[Tick, Event]): ujson.Value = + require(t.isRight, "Tick events should not be sent over the network.") + wire.eventFormat.encode(t.toOption.get) - override val viewFormat: WireFormat[View] = clockDrivenWire.viewFormat - -object ClockDrivenStateMachine: - val CLOCK_EVENT_HEADER = "X-Clock" - val CLOCK_EVENT_TICK_HEADER = "tick" + override val viewFormat: WireFormat[View] = wire.viewFormat -- GitLab