Last active
October 10, 2021 17:47
-
-
Save deanwampler/6b06ef23c996b0a82e3e3ab2f5bdbba5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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