blob: 658b5b1794c3f93cf44b2cc9da76386b3385ba85 (
plain) (
tree)
|
|
package xyz.driver.pdsuicommon.concurrent
import java.util.concurrent.LinkedBlockingQueue
import java.util.function.Predicate
import xyz.driver.pdsuicommon.concurrent.BridgeUploadQueue.Item
import xyz.driver.pdsuicommon.logging.PhiLogging
import scala.collection.JavaConverters._
import scala.concurrent.Future
/**
* Use it only for tests
*/
class InMemoryBridgeUploadQueue extends BridgeUploadQueue with PhiLogging {
private val queue = new LinkedBlockingQueue[Item]()
override def add(item: Item): Future[Item] = {
queue.add(item)
Future.successful(item)
}
override def tryRetry(item: Item): Future[Option[Item]] = Future.successful(Some(item))
override def get(kind: String): Future[Option[Item]] = {
val r = queue.iterator().asScala.find(_.kind == kind)
Future.successful(r)
}
override def complete(kind: String, tag: String): Future[Unit] = {
queue.removeIf(new Predicate[Item] {
override def test(t: Item): Boolean = t.kind == kind && t.tag == tag
})
Future.successful(())
}
}
|