private def fromBytes()

in chill-scala/src/main/scala/com/twitter/chill/Externalizer.scala [132:149]


  private def fromBytes(b: Array[Byte], kryo: KryoInstantiator): Option[T] =
    KryoPool
      .withByteArrayOutputStream(1, kryo)
      .fromBytes(b)
      .asInstanceOf[Option[T]]

  override def readExternal(in: ObjectInput): Unit = maybeReadJavaKryo(in, kryo)

  private def maybeReadJavaKryo(in: ObjectInput, kryo: KryoInstantiator): Unit =
    in.read match {
      case JAVA =>
        item = Right(in.readObject.asInstanceOf[Option[T]])
      case KRYO =>
        val sz = in.readInt
        val buf = new Array[Byte](sz)
        in.readFully(buf)
        item = Right(fromBytes(buf, kryo))
    }