|
Akka/Scala example source code file (ReceiveTimeout.scala)
The ReceiveTimeout.scala Akka example source code/** * Copyright (C) 2009-2014 Typesafe Inc. <http://www.typesafe.com> */ package akka.actor.dungeon import ReceiveTimeout.emptyReceiveTimeoutData import akka.actor.ActorCell import akka.actor.ActorCell.emptyCancellable import akka.actor.Cancellable import scala.concurrent.duration.Duration import scala.concurrent.duration.FiniteDuration private[akka] object ReceiveTimeout { final val emptyReceiveTimeoutData: (Duration, Cancellable) = (Duration.Undefined, ActorCell.emptyCancellable) } private[akka] trait ReceiveTimeout { this: ActorCell ⇒ import ReceiveTimeout._ import ActorCell._ private var receiveTimeoutData: (Duration, Cancellable) = emptyReceiveTimeoutData final def receiveTimeout: Duration = receiveTimeoutData._1 final def setReceiveTimeout(timeout: Duration): Unit = receiveTimeoutData = receiveTimeoutData.copy(_1 = timeout) final def checkReceiveTimeout() { val recvtimeout = receiveTimeoutData //Only reschedule if desired and there are currently no more messages to be processed if (!mailbox.hasMessages) recvtimeout._1 match { case f: FiniteDuration ⇒ recvtimeout._2.cancel() //Cancel any ongoing future val task = system.scheduler.scheduleOnce(f, self, akka.actor.ReceiveTimeout)(this.dispatcher) receiveTimeoutData = (f, task) case _ ⇒ cancelReceiveTimeout() } else cancelReceiveTimeout() } final def cancelReceiveTimeout(): Unit = if (receiveTimeoutData._2 ne emptyCancellable) { receiveTimeoutData._2.cancel() receiveTimeoutData = (receiveTimeoutData._1, emptyCancellable) } } Other Akka source code examplesHere is a short list of links related to this Akka ReceiveTimeout.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.