github.com/stackb/rules_proto@v0.0.0-20240221195024-5428336c51f1/example/golden/testdata/scala/lib/WithSnapshot.scala (about)

     1  package lib
     2  
     3  import proto.Complete
     4  
     5  /** 
     6    * An interface intended for extending ScalaPB generated case classes, but may
     7    * be used more generically.
     8    *
     9    * @tparam Message The type used for either snapshot messages or updates.
    10    * @tparam A       The class to which this interface is being added.
    11    */
    12  trait WithSnapshot[Message, A] {
    13    def withMessage(message: Message): A
    14  
    15    def withComplete(complete: Complete): A
    16  
    17    def getMessage: Message
    18  
    19    def getComplete: Complete
    20  
    21    final def toEither(isComplete: PartialFunction[WithSnapshot[_, _], Boolean]): Either[Message, Complete] =
    22      if (isComplete.lift(this).contains(true)) {
    23        Right(getComplete)
    24      } else {
    25        Left(getMessage)
    26      }
    27  }