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

readwriteactor.ReadWriteActor.scala Maven / Gradle / Ivy

The newest version!
package readwriteactor

import akka.actor.{ActorRef, ActorSystem, Props}
import readwriteactor.ReadWriteActorState.{ReadMsg, WriteMsg, WriteReadMsg}
import readwriteactor.Types.{Read, Write, WriteRead}

import scala.concurrent.{Future, Promise}

class ReadWriteActor[S](private val rwActor: ActorRef) {

  def this(state: S)(implicit system: ActorSystem) = this(system.actorOf(Props(new ReadWriteActorState(state))))

  def read[R](read: Read[S, R]): Future[R] = {
    val readPromise = Promise[R]()
    rwActor ! ReadMsg(read, readPromise)
    readPromise.future
  }

  def write(write: Write[S]): Future[S] = {
    val newStatePromise = Promise[S]()
    rwActor ! WriteMsg(write, newStatePromise)
    newStatePromise.future
  }

  def writeRead[R](write: WriteRead[S, R]): Future[R] = {
    val readPromise = Promise[R]()
    rwActor ! WriteReadMsg(write, readPromise)
    readPromise.future
  }

}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy