Skip to content

Instantly share code, notes, and snippets.

@deanwampler
Last active October 10, 2021 17:47
Show Gist options
  • Save deanwampler/6b06ef23c996b0a82e3e3ab2f5bdbba5 to your computer and use it in GitHub Desktop.
Save deanwampler/6b06ef23c996b0a82e3e3ab2f5bdbba5 to your computer and use it in GitHub Desktop.
package polyglotprogramming.messaging.v3
import polyglotprogramming.messaging.*
trait MessageHandler[IM <: IncomingMessage]:
final def apply(message: IM): OutgoingMessage =
println(s"Received message: $message")
process(message)
protected def process(message: IM): OutgoingMessage
protected def success(response: String) = Succeeded(response)
protected def failure(response: String) = Failed(response)
given MessageHandler[Start] with
protected def process(message: Start): OutgoingMessage = success("started")
given MessageHandler[DoWork1] with
protected def process(message: DoWork1): OutgoingMessage = success("work1")
given MessageHandler[DoWork2] with
protected def process(message: DoWork2): OutgoingMessage = failure("work2")
given MessageHandler[Stop] with
protected def process(message: Stop): OutgoingMessage = success("stopped")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment