Skip to content

Instantly share code, notes, and snippets.

@deanwampler
Created October 10, 2021 17:19
Show Gist options
  • Save deanwampler/243efa10dde1d75713ed4a7d648c28fe to your computer and use it in GitHub Desktop.
Save deanwampler/243efa10dde1d75713ed4a7d648c28fe to your computer and use it in GitHub Desktop.
package polyglotprogramming.messaging
/**
* Use a parent trait and case class subtypes. I don't use "sealed" for the
* IncomingMessage types, because in v4 I'll show how nicely we can add
* new message types with minimal, yet robust code changes.
*
* @param details string as a simple way of returning information.
*/
trait IncomingMessage(details: String)
case class Start(details: String) extends IncomingMessage(details)
case class DoWork1(details: String) extends IncomingMessage(details)
case class DoWork2(details: String) extends IncomingMessage(details)
case class Stop(details: String) extends IncomingMessage(details)
/** Here I'll assume we only need to return message types. */
sealed trait OutgoingMessage(details: String)
case class Succeeded(details: String) extends OutgoingMessage(details)
case class Failed(details: String) extends OutgoingMessage(details)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment