trait FromBinary[T <: Actor] {
def fromBinary(bytes: Array[Byte], act: T): T
}
trait ToBinary[T <: Actor] {
def toBinary(t: T): Array[Byte]
}
trait Format[T <: Actor] extends FromBinary[T] with ToBinary[T]
ScalaJSON, , SerializerBasedActorFormat trait
trait SerializerBasedActorFormat[T <: Actor] extends Format[T] {
val serializer: Serializer
def fromBinary(bytes: Array[Byte], act: T) = serializer.fromBinary(bytes, Some(act.self.actorClass)).asInstanceOf[T]
def toBinary(ac: T) = serializer.toBinary(ac)
}
ScalaJSON serializer.
SJSON Scala , ( , ). , .
-
@BeanInfo
case class Example(id: String,
@(JSONTypeHint @field)(value = classOf[MyActor])
actr: ActorRef)
implicit object MyActorFormat extends SerializerBasedActorFormat[MyActor] {
val serializer = Serializer.ScalaJSON
}
- , case, Akka - Akka protobufs TCP.
- ? , ,
self.sender, ! self.senderFuture, !! !!!. ActorRef ( RemoteActorRef) , ( stdlib / Erlang []) , .