class PersistenceMonitor extends Actor
Observe and manage the persistence of a single named player avatar entity in the game world,
with special care to the conditions of short interruption in connectivity (relogging)
and end-of-life operations.
Upon login, the monitor will echo all of the current information about the user's (recent) login back to the sender
.
With a zone and a coordinate position in that zone, a user's player avatar can be properly reconnected
or can be reconstructed.
Without actual recent activity,
the default information about the zone is an indication that the user must start this player avatar from scratch.
The monitor expects a reliable update messaging (heartbeat) to keep track of the important information
and to determine the conditions for end-of-life activity.
- Alphabetic
- By Inheritance
- PersistenceMonitor
- Actor
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new PersistenceMonitor(name: String, squadService: ActorRef, galaxyService: ActorRef)
- name
the unique name of the player
- squadService
a hook into the
SquadService
event system
Type Members
- type Receive = PartialFunction[Any, Unit]
- Definition Classes
- Actor
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def AvatarLogout(avatar: Avatar): Unit
A common set of actions to perform in the course of logging out an avatar.
A common set of actions to perform in the course of logging out an avatar. Of the four scenarios described - in transport, on foot, released, missing - three of them utilize these operations. The avatar will virtually always be in an existential position, one that needs to be handled at logout
- avatar
the avatar
- See also
Avatar
Deployables.Disown
Service.Leave
Zone.Population.Leave
- def PerformLogout(): Unit
When the sustenance updates of the persistence monitor come to an end, and the persistence monitor itself is about to clean itself up, the player and avatar combination that has been associated with it will also undergo independent end of life activity.
When the sustenance updates of the persistence monitor come to an end, and the persistence monitor itself is about to clean itself up, the player and avatar combination that has been associated with it will also undergo independent end of life activity. This is the true purpose of the persistence object - to perform a proper logout.
The updates have been providing the zone and the basic information about the user (player name) has been provided since the beginning and it's a trivial matter to find where the avatar and player and assess their circumstances. The four important vectors are: the player avatar is in a vehicle, the player avatar is standing, only the avatar exists and the player released, and neither the avatar nor the player exist. It does not matter whether the player, if encountered, is alive or dead, only if they have been rendered a corpse and did not respawn. The fourth condition is not technically a failure condition, and can arise during normal transitional gameplay, but should be uncommon. - def PlayerAvatarLogout(avatar: Avatar, player: Player): Unit
A common set of actions to perform in the course of logging out a player avatar.
A common set of actions to perform in the course of logging out a player avatar. Of the four scenarios described - in transport, on foot, released, missing - two of them utilize these operations. One of the other two uses a modified version of some of these activities to facilitate its log out. As this persistence monitor is about to become invalid, any messages sent in response to what we are sending are received by the monitor's parent.
- avatar
the avatar
- player
the player
- See also
Avatar
AvatarAction.ObjectDelete
AvatarServiceMessage
GUIDTask.UnregisterPlayer
Player
Zone.AvatarEvents
Zone.Population.Release
- def UpdateTimer(): Unit
Restart the minimum activity timer.
- def aroundPostRestart(reason: Throwable): Unit
- Attributes
- protected[akka]
- Definition Classes
- Actor
- Annotations
- @InternalApi()
- def aroundPostStop(): Unit
- Attributes
- protected[akka]
- Definition Classes
- Actor
- Annotations
- @InternalApi()
- def aroundPreRestart(reason: Throwable, message: Option[Any]): Unit
- Attributes
- protected[akka]
- Definition Classes
- Actor
- Annotations
- @InternalApi()
- def aroundPreStart(): Unit
- Attributes
- protected[akka]
- Definition Classes
- Actor
- Annotations
- @InternalApi()
- def aroundReceive(receive: akka.actor.Actor.Receive, msg: Any): Unit
- Attributes
- protected[akka]
- Definition Classes
- Actor
- Annotations
- @InternalApi()
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- implicit val context: ActorContext
- Definition Classes
- Actor
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- var inZone: Zone
the last-reported zone of this player
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- var kickTime: Option[Long]
- var kicked: Boolean
- var lastPosition: Vector3
the last-reported game coordinate position of this player
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- var persistTime: Option[Long]
a custom logout time for this player; 60s by default
- def postRestart(reason: Throwable): Unit
- Definition Classes
- Actor
- Annotations
- @throws(classOf[java.lang.Exception])
- def postStop(): Unit
Perform logout operations before the persistence monitor finally stops.
Perform logout operations before the persistence monitor finally stops.
- Definition Classes
- PersistenceMonitor → Actor
- def preRestart(reason: Throwable, message: Option[Any]): Unit
- Definition Classes
- Actor
- Annotations
- @throws(classOf[java.lang.Exception])
- def preStart(): Unit
- Definition Classes
- Actor
- Annotations
- @throws(classOf[java.lang.Exception])
- def receive: Receive
- Definition Classes
- PersistenceMonitor → Actor
- implicit final val self: ActorRef
- Definition Classes
- Actor
- final def sender(): ActorRef
- Definition Classes
- Actor
- def supervisorStrategy: SupervisorStrategy
- Definition Classes
- Actor
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- var timer: Cancellable
the ongoing amount of permissible inactivity
- def toString(): String
- Definition Classes
- AnyRef → Any
- def unhandled(message: Any): Unit
- Definition Classes
- Actor
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()