2013-09-14 14:19:18 +02:00
|
|
|
/**
|
|
|
|
|
* Copyright (C) 2009-2013 Typesafe Inc. <http://www.typesafe.com>
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
package akka.persistence
|
|
|
|
|
|
2013-10-27 08:01:14 +01:00
|
|
|
import scala.collection.immutable
|
|
|
|
|
|
2013-09-14 14:19:18 +02:00
|
|
|
import akka.actor._
|
|
|
|
|
|
2013-12-06 12:48:44 +01:00
|
|
|
import akka.persistence.serialization.Message
|
|
|
|
|
|
2013-09-14 14:19:18 +02:00
|
|
|
/**
|
2013-11-25 12:02:29 +01:00
|
|
|
* INTERNAL API.
|
|
|
|
|
*
|
2013-09-14 14:19:18 +02:00
|
|
|
* Defines messages exchanged between processors, channels and a journal.
|
|
|
|
|
*/
|
2013-10-08 11:46:02 +02:00
|
|
|
private[persistence] object JournalProtocol {
|
2013-09-14 14:19:18 +02:00
|
|
|
/**
|
2013-11-12 09:02:02 +01:00
|
|
|
* Instructs a journal to delete all persistent messages with sequence numbers in
|
|
|
|
|
* the range from `fromSequenceNr` to `toSequenceNr` (both inclusive). If `permanent`
|
|
|
|
|
* is set to `false`, the persistent messages are marked as deleted in the journal,
|
|
|
|
|
* otherwise they are permanently deleted from the journal.
|
2013-09-14 14:19:18 +02:00
|
|
|
*/
|
2013-11-12 09:02:02 +01:00
|
|
|
case class Delete(processorId: String, fromSequenceNr: Long, toSequenceNr: Long, permanent: Boolean)
|
2013-09-14 14:19:18 +02:00
|
|
|
|
2013-12-06 12:48:44 +01:00
|
|
|
/**
|
|
|
|
|
* Message sent after confirming the receipt of a [[ConfirmablePersistent]] message.
|
|
|
|
|
*
|
|
|
|
|
* @param processorId id of the processor that sent the message corresponding to
|
|
|
|
|
* this confirmation to a channel.
|
|
|
|
|
* @param messageSequenceNr sequence number of the sent message.
|
|
|
|
|
* @param channelId id of the channel that delivered the message corresponding to
|
|
|
|
|
* this confirmation.
|
|
|
|
|
* @param wrapperSequenceNr sequence number of the message stored by a persistent
|
|
|
|
|
* channel. This message contains the [[Deliver]] request
|
|
|
|
|
* with the message identified by `processorId` and
|
|
|
|
|
* `messageSequenceNumber`.
|
|
|
|
|
* @param channelEndpoint actor reference that sent the the message corresponding to
|
|
|
|
|
* this confirmation. This is a child actor of the sending
|
|
|
|
|
* [[Channel]] or [[PersistentChannel]].
|
|
|
|
|
*/
|
|
|
|
|
case class Confirm(processorId: String, messageSequenceNr: Long, channelId: String, wrapperSequenceNr: Long = 0L, channelEndpoint: ActorRef = null) extends Message
|
|
|
|
|
|
2013-10-27 08:01:14 +01:00
|
|
|
/**
|
|
|
|
|
* Instructs a journal to persist a sequence of messages.
|
|
|
|
|
*
|
|
|
|
|
* @param persistentBatch batch of messages to be persisted.
|
|
|
|
|
* @param processor requesting processor.
|
|
|
|
|
*/
|
2013-11-07 10:45:02 +01:00
|
|
|
case class WriteBatch(persistentBatch: immutable.Seq[PersistentRepr], processor: ActorRef)
|
2013-10-27 08:01:14 +01:00
|
|
|
|
2013-09-14 14:19:18 +02:00
|
|
|
/**
|
2013-11-20 13:47:42 +01:00
|
|
|
* Reply message to a processor if a batch write succeeded. This message is received before
|
|
|
|
|
* all subsequent [[WriteSuccess]] messages.
|
|
|
|
|
*/
|
|
|
|
|
case object WriteBatchSuccess
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Reply message to a processor if a batch write failed. This message is received before
|
|
|
|
|
* all subsequent [[WriteFailure]] messages.
|
2013-09-14 14:19:18 +02:00
|
|
|
*
|
2013-11-20 13:47:42 +01:00
|
|
|
* @param cause failure cause.
|
2013-09-14 14:19:18 +02:00
|
|
|
*/
|
2013-11-20 13:47:42 +01:00
|
|
|
case class WriteBatchFailure(cause: Throwable)
|
2013-09-14 14:19:18 +02:00
|
|
|
|
|
|
|
|
/**
|
2013-10-08 11:46:02 +02:00
|
|
|
* Reply message to a processor that `persistent` message has been successfully journaled.
|
|
|
|
|
*
|
|
|
|
|
* @param persistent persistent message.
|
|
|
|
|
*/
|
2013-11-07 10:45:02 +01:00
|
|
|
case class WriteSuccess(persistent: PersistentRepr)
|
2013-10-08 11:46:02 +02:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Reply message to a processor that `persistent` message could not be journaled.
|
2013-09-14 14:19:18 +02:00
|
|
|
*
|
|
|
|
|
* @param persistent persistent message.
|
2013-10-08 11:46:02 +02:00
|
|
|
* @param cause failure cause.
|
2013-09-14 14:19:18 +02:00
|
|
|
*/
|
2013-11-07 10:45:02 +01:00
|
|
|
case class WriteFailure(persistent: PersistentRepr, cause: Throwable)
|
2013-09-14 14:19:18 +02:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Instructs a journal to loop a `message` back to `processor`, without persisting the
|
|
|
|
|
* message. Looping of messages through a journal is required to preserve message order
|
|
|
|
|
* with persistent messages.
|
|
|
|
|
*
|
|
|
|
|
* @param message message to be looped through the journal.
|
|
|
|
|
* @param processor requesting processor.
|
|
|
|
|
*/
|
|
|
|
|
case class Loop(message: Any, processor: ActorRef)
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Reply message to a processor that a `message` has been looped through the journal.
|
|
|
|
|
*
|
|
|
|
|
* @param message looped message.
|
|
|
|
|
*/
|
2013-10-08 11:46:02 +02:00
|
|
|
case class LoopSuccess(message: Any)
|
2013-09-14 14:19:18 +02:00
|
|
|
|
|
|
|
|
/**
|
2013-10-08 11:46:02 +02:00
|
|
|
* Instructs a journal to replay messages to `processor`.
|
|
|
|
|
*
|
|
|
|
|
* @param fromSequenceNr sequence number where replay should start.
|
|
|
|
|
* @param toSequenceNr sequence number where replay should end (inclusive).
|
|
|
|
|
* @param processorId requesting processor id.
|
|
|
|
|
* @param processor requesting processor.
|
2013-09-14 14:19:18 +02:00
|
|
|
*/
|
2013-10-08 11:46:02 +02:00
|
|
|
case class Replay(fromSequenceNr: Long, toSequenceNr: Long, processorId: String, processor: ActorRef)
|
2013-09-14 14:19:18 +02:00
|
|
|
|
|
|
|
|
/**
|
2013-09-26 09:14:43 +02:00
|
|
|
* Reply message to a processor that `persistent` message has been replayed.
|
2013-09-14 14:19:18 +02:00
|
|
|
*
|
|
|
|
|
* @param persistent persistent message.
|
|
|
|
|
*/
|
2013-11-07 10:45:02 +01:00
|
|
|
case class Replayed(persistent: PersistentRepr)
|
2013-09-14 14:19:18 +02:00
|
|
|
|
|
|
|
|
/**
|
2013-09-26 09:14:43 +02:00
|
|
|
* Reply message to a processor that all `persistent` messages have been replayed.
|
2013-09-14 14:19:18 +02:00
|
|
|
*
|
|
|
|
|
* @param maxSequenceNr the highest stored sequence number (for a processor).
|
|
|
|
|
*/
|
2013-10-08 11:46:02 +02:00
|
|
|
case class ReplaySuccess(maxSequenceNr: Long)
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Reply message to a processor that not all `persistent` messages could have been
|
|
|
|
|
* replayed.
|
|
|
|
|
*/
|
|
|
|
|
case class ReplayFailure(cause: Throwable)
|
2013-09-14 14:19:18 +02:00
|
|
|
}
|
|
|
|
|
|