All Downloads are FREE. Search and download functionalities are using the official Maven repository.

in.ashwanthkumar.suuchi.router.Marshallers.scala Maven / Gradle / Ivy

The newest version!
package in.ashwanthkumar.suuchi.router

import in.ashwanthkumar.suuchi.cluster.MemberAddress
import io.grpc.Metadata.AsciiMarshaller

/**
 * Send a string value using AsciiMarshaller
 */
case object StringMarshaller extends AsciiMarshaller[String] {
  override def toAsciiString(value: String): String         = value
  override def parseAsciiString(serialized: String): String = serialized
}

/**
 * Send a boolean value using AsciiMarshaller
 */
case object BooleanMarshaller extends AsciiMarshaller[Boolean] {
  override def toAsciiString(value: Boolean): String         = value.toString
  override def parseAsciiString(serialized: String): Boolean = serialized.toBoolean
}

/**
 * Converts a collection of [[MemberAddress]] to it's external form separated by `|`
 */
case object ListOfMemberAddressMarshaller extends AsciiMarshaller[List[MemberAddress]] {
  override def parseAsciiString(serialized: String): List[MemberAddress] =
    serialized.split('|').map(MemberAddress.apply).toList
  override def toAsciiString(value: List[MemberAddress]): String =
    value.map(_.toExternalForm).mkString("|")
}

/**
 * Converts a [[MemberAddress]] to it's external form
 */
case object MemberAddressMarshaller extends AsciiMarshaller[MemberAddress] {
  override def parseAsciiString(serialized: String): MemberAddress =
    MemberAddress.apply(serialized)
  override def toAsciiString(value: MemberAddress): String =
    value.toExternalForm
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy