diff --git a/akka-persistence/src/main/scala/akka/persistence/JournalProtocol.scala b/akka-persistence/src/main/scala/akka/persistence/JournalProtocol.scala index 880e9fbc4b..0a64196efb 100644 --- a/akka-persistence/src/main/scala/akka/persistence/JournalProtocol.scala +++ b/akka-persistence/src/main/scala/akka/persistence/JournalProtocol.scala @@ -14,10 +14,19 @@ import akka.actor._ * Messages exchanged between persistent actors, views and a journal. */ private[persistence] object JournalProtocol { + + /** Marker trait shared by internal journal messages. */ + sealed trait Message extends Protocol.Message + /** Internal journal command. */ + sealed trait Request extends Message + /** Internal journal acknowledgement. */ + sealed trait Response extends Message + /** * Reply message to a failed [[DeleteMessages]] request. */ final case class DeleteMessagesFailure(cause: Throwable) + extends Response /** * Request to delete all persistent messages with sequence numbers up to `toSequenceNr` @@ -25,6 +34,7 @@ private[persistence] object JournalProtocol { * as deleted in the journal, otherwise they are permanently deleted from the journal. */ final case class DeleteMessagesTo(persistenceId: String, toSequenceNr: Long, permanent: Boolean) + extends Request /** * Request to write messages. @@ -33,12 +43,14 @@ private[persistence] object JournalProtocol { * @param persistentActor write requestor. */ final case class WriteMessages(messages: immutable.Seq[PersistentEnvelope], persistentActor: ActorRef, actorInstanceId: Int) + extends Request /** * Reply message to a successful [[WriteMessages]] request. This reply is sent to the requestor * before all subsequent [[WriteMessageSuccess]] replies. */ case object WriteMessagesSuccessful + extends Response /** * Reply message to a failed [[WriteMessages]] request. This reply is sent to the requestor @@ -47,6 +59,7 @@ private[persistence] object JournalProtocol { * @param cause failure cause. */ final case class WriteMessagesFailed(cause: Throwable) + extends Response /** * Reply message to a successful [[WriteMessages]] request. For each contained [[PersistentRepr]] message @@ -55,6 +68,7 @@ private[persistence] object JournalProtocol { * @param persistent successfully written message. */ final case class WriteMessageSuccess(persistent: PersistentRepr, actorInstanceId: Int) + extends Response /** * Reply message to a failed [[WriteMessages]] request. For each contained [[PersistentRepr]] message @@ -64,6 +78,7 @@ private[persistence] object JournalProtocol { * @param cause failure cause. */ final case class WriteMessageFailure(message: PersistentRepr, cause: Throwable, actorInstanceId: Int) + extends Response /** * Reply message to a [[WriteMessages]] with a non-persistent message. @@ -71,6 +86,7 @@ private[persistence] object JournalProtocol { * @param message looped message. */ final case class LoopMessageSuccess(message: Any, actorInstanceId: Int) + extends Response /** * Request to replay messages to `persistentActor`. @@ -83,6 +99,7 @@ private[persistence] object JournalProtocol { * @param replayDeleted `true` if messages marked as deleted shall be replayed. */ final case class ReplayMessages(fromSequenceNr: Long, toSequenceNr: Long, max: Long, persistenceId: String, persistentActor: ActorRef, replayDeleted: Boolean = false) + extends Request /** * Reply message to a [[ReplayMessages]] request. A separate reply is sent to the requestor for each @@ -91,18 +108,21 @@ private[persistence] object JournalProtocol { * @param persistent replayed message. */ final case class ReplayedMessage(persistent: PersistentRepr) + extends Response /** * Reply message to a successful [[ReplayMessages]] request. This reply is sent to the requestor * after all [[ReplayedMessage]] have been sent (if any). */ case object ReplayMessagesSuccess + extends Response /** * Reply message to a failed [[ReplayMessages]] request. This reply is sent to the requestor * if a replay could not be successfully completed. */ final case class ReplayMessagesFailure(cause: Throwable) + extends Response /** * Request to read the highest stored sequence number of a given persistent actor. @@ -112,6 +132,7 @@ private[persistence] object JournalProtocol { * @param persistentActor requesting persistent actor. */ final case class ReadHighestSequenceNr(fromSequenceNr: Long = 1L, persistenceId: String, persistentActor: ActorRef) + extends Request /** * Reply message to a successful [[ReadHighestSequenceNr]] request. @@ -119,6 +140,7 @@ private[persistence] object JournalProtocol { * @param highestSequenceNr read highest sequence number. */ final case class ReadHighestSequenceNrSuccess(highestSequenceNr: Long) + extends Response /** * Reply message to a failed [[ReadHighestSequenceNr]] request. @@ -126,5 +148,5 @@ private[persistence] object JournalProtocol { * @param cause failure cause. */ final case class ReadHighestSequenceNrFailure(cause: Throwable) + extends Response } - diff --git a/akka-persistence/src/main/scala/akka/persistence/Protocol.scala b/akka-persistence/src/main/scala/akka/persistence/Protocol.scala new file mode 100644 index 0000000000..07b35ef9c7 --- /dev/null +++ b/akka-persistence/src/main/scala/akka/persistence/Protocol.scala @@ -0,0 +1,24 @@ +/** + * Copyright (C) 2009-2014 Typesafe Inc. + */ + +package akka.persistence + +/** + * INTERNAL API. + * + * Messages exchanged between persistent actors, views and a journal/snapshot-store. + */ +private[persistence] object Protocol { + + /** + * INTERNAL API. + * + * Internal persistence extension messages extend this trait. + * + * Helps persistence plugin developers to differentiate + * internal persistence extension messages from their custom plugin messages. + */ + trait Message + +} diff --git a/akka-persistence/src/main/scala/akka/persistence/Snapshot.scala b/akka-persistence/src/main/scala/akka/persistence/SnapshotProtocol.scala similarity index 91% rename from akka-persistence/src/main/scala/akka/persistence/Snapshot.scala rename to akka-persistence/src/main/scala/akka/persistence/SnapshotProtocol.scala index 72c3dfc864..2aaa54574e 100644 --- a/akka-persistence/src/main/scala/akka/persistence/Snapshot.scala +++ b/akka-persistence/src/main/scala/akka/persistence/SnapshotProtocol.scala @@ -12,7 +12,8 @@ package akka.persistence * @param sequenceNr sequence number at which the snapshot was taken. * @param timestamp time at which the snapshot was saved. */ -@SerialVersionUID(1L) //#snapshot-metadata +@SerialVersionUID(1L) // +//#snapshot-metadata final case class SnapshotMetadata(persistenceId: String, sequenceNr: Long, timestamp: Long = 0L) //#snapshot-metadata @@ -113,6 +114,14 @@ object SelectedSnapshot { * Defines messages exchanged between persistent actors and a snapshot store. */ private[persistence] object SnapshotProtocol { + + /** Marker trait shared by internal snapshot messages. */ + sealed trait Message extends Protocol.Message + /** Internal snapshot command. */ + sealed trait Request extends Message + /** Internal snapshot acknowledgement. */ + sealed trait Response extends Message + /** * Instructs a snapshot store to load a snapshot. * @@ -121,6 +130,7 @@ private[persistence] object SnapshotProtocol { * @param toSequenceNr upper sequence number bound (inclusive) for recovery. */ final case class LoadSnapshot(persistenceId: String, criteria: SnapshotSelectionCriteria, toSequenceNr: Long) + extends Request /** * Response message to a [[LoadSnapshot]] message. @@ -128,6 +138,7 @@ private[persistence] object SnapshotProtocol { * @param snapshot loaded snapshot, if any. */ final case class LoadSnapshotResult(snapshot: Option[SelectedSnapshot], toSequenceNr: Long) + extends Response /** * Instructs snapshot store to save a snapshot. @@ -136,6 +147,7 @@ private[persistence] object SnapshotProtocol { * @param snapshot snapshot. */ final case class SaveSnapshot(metadata: SnapshotMetadata, snapshot: Any) + extends Request /** * Instructs snapshot store to delete a snapshot. @@ -143,6 +155,7 @@ private[persistence] object SnapshotProtocol { * @param metadata snapshot metadata. */ final case class DeleteSnapshot(metadata: SnapshotMetadata) + extends Request /** * Instructs snapshot store to delete all snapshots that match `criteria`. @@ -151,4 +164,5 @@ private[persistence] object SnapshotProtocol { * @param criteria criteria for selecting snapshots to be deleted. */ final case class DeleteSnapshots(persistenceId: String, criteria: SnapshotSelectionCriteria) + extends Request }