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

zygf.jackshaft.conf.TempBufferProvider.scala Maven / Gradle / Ivy

Go to download

Incremental (non-blocking) parsing for Scala JSON ASTs, based on jackson-core.

There is a newer version: 0.2.2
Show newest version
package zygf.jackshaft.conf

import java.util.function.Supplier

abstract class TempBufferProvider
{
  def acquire(): Array[Byte]
  def release(buffer: Array[Byte]): Unit
}

object TempBufferProvider
{
  val defaultSize = 4096
  
  abstract class NonReleasing extends TempBufferProvider
  {
    final override def release(buffer: Array[Byte]): Unit = ()
  }
  
  class Fresh(val size: Int) extends NonReleasing
  {
    override def acquire() = new Array[Byte](size)
  }
  
  object Fresh extends Fresh(defaultSize)
  
  class ThreadLocal(val size: Int) extends NonReleasing
  {
    private val threadBuffer = java.lang.ThreadLocal.withInitial[Array[Byte]] {
      new Supplier[Array[Byte]] {
        override def get() = new Array[Byte](size)
      }
    }
  
    override def acquire() = threadBuffer.get()
  }
  
  object ThreadLocal extends ThreadLocal(defaultSize)
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy