mirror of
https://github.com/psforever/PSF-LoginServer.git
synced 2026-07-09 13:34:40 +00:00
replacing *ServiceResponse classes with GenericResponseEnvelope and an identifying stamp in all remaining cases such that the classes are unnecessary for the project and can be deleted; squad remaains untouched due to its difference
This commit is contained in:
parent
cbf6aa5ebb
commit
7e1e0e3016
14 changed files with 74 additions and 93 deletions
|
|
@ -75,23 +75,19 @@ ignore:
|
|||
- "src/main/scala/net/psforever/services/account/StoreIPAddress.scala"
|
||||
- "src/main/scala/net/psforever/services/avatar/AvatarAction.scala"
|
||||
- "src/main/scala/net/psforever/services/avatar/AvatarService.scala"
|
||||
- "src/main/scala/net/psforever/services/avatar/AvatarServiceResponse.scala"
|
||||
- "src/main/scala/net/psforever/services/base/bus"
|
||||
- "src/main/scala/net/psforever/services/base/envelope"
|
||||
- "src/main/scala/net/psforever/services/chat/ChatChannel.scala"
|
||||
- "src/main/scala/net/psforever/services/galaxy/GalaxyAction"
|
||||
- "src/main/scala/net/psforever/services/galaxy/GalaxyService"
|
||||
- "src/main/scala/net/psforever/services/galaxy/GalaxyServiceResponse.scala"
|
||||
- "src/main/scala/net/psforever/services/hart/HartEvent.scala"
|
||||
- "src/main/scala/net/psforever/services/hart/HartTimerActions.scala"
|
||||
- "src/main/scala/net/psforever/services/local/LocalAction"
|
||||
- "src/main/scala/net/psforever/services/local/LocalService"
|
||||
- "src/main/scala/net/psforever/services/local/LocalServiceResponse.scala"
|
||||
- "src/main/scala/net/psforever/services/teamwork/SquadServiceMessage.scala"
|
||||
- "src/main/scala/net/psforever/services/teamwork/SquadServiceResponse.scala"
|
||||
- "src/main/scala/net/psforever/services/vehicle/VehicleAction"
|
||||
- "src/main/scala/net/psforever/services/vehicle/VehicleService"
|
||||
- "src/main/scala/net/psforever/services/vehicle/VehicleServiceResponse.scala"
|
||||
- "src/main/scala/net/psforever/services/Service.scala"
|
||||
- "src/main/scala/net/psforever/types"
|
||||
- "src/main/scala/net/psforever/util"
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@ import net.psforever.objects.avatar.ModePermissions
|
|||
import net.psforever.objects.avatar.scoring.{Assist, Death, EquipmentStat, KDAStat, Kill, Life, ScoreCard, SupportActivity}
|
||||
import net.psforever.objects.sourcing.{TurretSource, VehicleSource}
|
||||
import net.psforever.packet.game.ImplantAction
|
||||
import net.psforever.services.avatar.AvatarStamp
|
||||
import net.psforever.services.base.envelope.GenericResponseEnvelope
|
||||
import net.psforever.types.{ChatMessageType, StatisticalCategory, StatisticalElement}
|
||||
import net.psforever.zones.Zones
|
||||
import org.joda.time.{LocalDateTime, Seconds}
|
||||
|
|
@ -3490,8 +3492,8 @@ class AvatarActor(
|
|||
value: Int
|
||||
): Unit = {
|
||||
import akka.actor.typed.scaladsl.adapter.TypedActorRefOps
|
||||
import net.psforever.services.avatar.AvatarServiceResponse
|
||||
sessionActor.toClassic ! AvatarServiceResponse("", guid, AvatarAction.AvatarImplant(action, index, value))
|
||||
val resp = AvatarAction.AvatarImplant(action, index, value)
|
||||
sessionActor.toClassic ! GenericResponseEnvelope(AvatarStamp, "", guid, resp)
|
||||
}
|
||||
|
||||
private def buyImplantAction(
|
||||
|
|
|
|||
|
|
@ -12,7 +12,8 @@ import net.psforever.objects.serverobject.containable.ContainableBehavior
|
|||
import net.psforever.objects.serverobject.mount.Mountable
|
||||
import net.psforever.objects.vital.RevivingActivity
|
||||
import net.psforever.packet.game.{AvatarImplantMessage, CreateShortcutMessage, HitHint, ImplantAction}
|
||||
import net.psforever.services.avatar.{AvatarAction, AvatarServiceResponse}
|
||||
import net.psforever.services.avatar.{AvatarAction, AvatarStamp}
|
||||
import net.psforever.services.base.envelope.GenericResponseEnvelope
|
||||
import net.psforever.services.base.message.{ChangeAmmo, ChangeFireState_Start, ChangeFireState_Stop, ConcealPlayer, EventResponse, GenericObjectAction, HintsAtAttacker, ObjectDelete, PlanetsideAttribute, ReloadTool, SendResponse, SetEmpire, WeaponDryFire}
|
||||
import net.psforever.types.ImplantType
|
||||
|
||||
|
|
@ -60,11 +61,11 @@ class AvatarHandlerLogic(val ops: SessionAvatarHandlers, implicit val context: A
|
|||
/* special messages */
|
||||
case AvatarAction.TeardownConnection() if player.spectator =>
|
||||
context.self ! SessionActor.SetMode(CustomerServiceRepresentativeMode)
|
||||
context.self.forward(AvatarServiceResponse(toChannel, guid, reply))
|
||||
context.self.forward(GenericResponseEnvelope(AvatarStamp, toChannel, guid, reply))
|
||||
|
||||
case AvatarAction.TeardownConnection() =>
|
||||
context.self ! SessionActor.SetMode(NormalMode)
|
||||
context.self.forward(AvatarServiceResponse(toChannel, guid, reply))
|
||||
context.self.forward(GenericResponseEnvelope(AvatarStamp, toChannel, guid, reply))
|
||||
|
||||
/* really common messages (very frequently, every life) */
|
||||
case pstate @ AvatarAction.PlayerState(
|
||||
|
|
|
|||
|
|
@ -14,9 +14,10 @@ import net.psforever.objects.serverobject.pad.VehicleSpawnPad
|
|||
import net.psforever.packet.game.objectcreate.ObjectCreateMessageParent
|
||||
import net.psforever.packet.game.{ChangeAmmoMessage, ChangeFireStateMessage_Start, ChangeFireStateMessage_Stop, ChatMsg, ChildObjectStateMessage, DeadState, DeployRequestMessage, DismountVehicleMsg, FrameVehicleStateMessage, GenericObjectActionMessage, HitHint, InventoryStateMessage, ObjectAttachMessage, ObjectCreateDetailedMessage, ObjectCreateMessage, ObjectDeleteMessage, ObjectDetachMessage, PlanetsideAttributeMessage, ReloadMessage, ServerVehicleOverrideMsg, VehicleStateMessage, WeaponDryFireMessage}
|
||||
import net.psforever.services.Service
|
||||
import net.psforever.services.base.envelope.GenericResponseEnvelope
|
||||
import net.psforever.services.base.message.{ChangeAmmo, ChangeFireState_Start, ChangeFireState_Stop, EventResponse, GenericObjectAction, HintsAtAttacker, ObjectDelete, PlanetsideAttribute, ReloadTool, SendResponse, WeaponDryFire}
|
||||
import net.psforever.services.local.support.CaptureFlagManager
|
||||
import net.psforever.services.vehicle.{VehicleAction, VehicleServiceResponse}
|
||||
import net.psforever.services.vehicle.{VehicleAction, VehicleStamp}
|
||||
import net.psforever.types.{BailType, ChatMessageType, PlanetSideGUID, Vector3}
|
||||
|
||||
object VehicleHandlerLogic {
|
||||
|
|
@ -256,11 +257,13 @@ class VehicleHandlerLogic(val ops: SessionVehicleHandlers, implicit val context:
|
|||
)
|
||||
import scala.concurrent.ExecutionContext.Implicits.global
|
||||
import scala.concurrent.duration._
|
||||
context.system.scheduler.scheduleOnce(
|
||||
delay milliseconds,
|
||||
context.self,
|
||||
VehicleServiceResponse(toChannel, PlanetSideGUID(0), VehicleAction.KickCargo(vehicle, speed=0, delay))
|
||||
val resp = GenericResponseEnvelope(
|
||||
VehicleStamp,
|
||||
toChannel,
|
||||
PlanetSideGUID(0),
|
||||
VehicleAction.KickCargo(vehicle, speed=0, delay)
|
||||
)
|
||||
context.system.scheduler.scheduleOnce(delay milliseconds, context.self, resp)
|
||||
|
||||
case VehicleAction.KickCargo(cargo, _, _)
|
||||
if player.VehicleSeated.nonEmpty && sessionLogic.zoning.spawn.deadState == DeadState.Alive =>
|
||||
|
|
|
|||
|
|
@ -8,8 +8,9 @@ import net.psforever.objects.equipment.Equipment
|
|||
import net.psforever.objects.serverobject.pad.VehicleSpawnPad
|
||||
import net.psforever.packet.game.objectcreate.ObjectCreateMessageParent
|
||||
import net.psforever.packet.game.{ChangeAmmoMessage, ChangeFireStateMessage_Start, ChangeFireStateMessage_Stop, ChildObjectStateMessage, DeadState, DeployRequestMessage, DismountVehicleMsg, FrameVehicleStateMessage, GenericObjectActionMessage, InventoryStateMessage, ObjectAttachMessage, ObjectCreateDetailedMessage, ObjectCreateMessage, ObjectDeleteMessage, ObjectDetachMessage, PlanetsideAttributeMessage, ReloadMessage, ServerVehicleOverrideMsg, VehicleStateMessage, WeaponDryFireMessage}
|
||||
import net.psforever.services.base.envelope.GenericResponseEnvelope
|
||||
import net.psforever.services.base.message.{ChangeAmmo, ChangeFireState_Start, ChangeFireState_Stop, EventResponse, GenericObjectAction, ObjectDelete, PlanetsideAttribute, ReloadTool, SendResponse, WeaponDryFire}
|
||||
import net.psforever.services.vehicle.{VehicleAction, VehicleServiceResponse}
|
||||
import net.psforever.services.vehicle.{VehicleAction, VehicleStamp}
|
||||
import net.psforever.types.{BailType, PlanetSideGUID, Vector3}
|
||||
|
||||
object VehicleHandlerLogic {
|
||||
|
|
@ -205,11 +206,13 @@ class VehicleHandlerLogic(val ops: SessionVehicleHandlers, implicit val context:
|
|||
)
|
||||
import scala.concurrent.ExecutionContext.Implicits.global
|
||||
import scala.concurrent.duration._
|
||||
context.system.scheduler.scheduleOnce(
|
||||
delay milliseconds,
|
||||
context.self,
|
||||
VehicleServiceResponse(toChannel, PlanetSideGUID(0), VehicleAction.KickCargo(vehicle, speed=0, delay))
|
||||
val resp = GenericResponseEnvelope(
|
||||
VehicleStamp,
|
||||
toChannel,
|
||||
PlanetSideGUID(0),
|
||||
VehicleAction.KickCargo(vehicle, speed=0, delay)
|
||||
)
|
||||
context.system.scheduler.scheduleOnce(delay milliseconds, context.self, resp)
|
||||
|
||||
case VehicleAction.KickCargo(cargo, _, _)
|
||||
if player.VehicleSeated.nonEmpty && sessionLogic.zoning.spawn.deadState == DeadState.Alive =>
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ import net.psforever.objects.sourcing.{PlayerSource, SourceEntry, UniquePlayer}
|
|||
import net.psforever.packet.game.objectcreate.ConstructorData
|
||||
import net.psforever.objects.zones.exp
|
||||
import net.psforever.services.Service
|
||||
import net.psforever.services.avatar.{AvatarAction, AvatarServiceResponse}
|
||||
import net.psforever.services.base.envelope.MessageEnvelope
|
||||
import net.psforever.services.avatar.{AvatarAction, AvatarStamp}
|
||||
import net.psforever.services.base.envelope.{GenericResponseEnvelope, MessageEnvelope}
|
||||
import net.psforever.services.base.message.{EventResponse, SendResponse}
|
||||
import net.psforever.services.chat.OutfitChannel
|
||||
|
||||
|
|
@ -213,7 +213,8 @@ class SessionAvatarHandlers(
|
|||
def killedWhileMounted(obj: PlanetSideGameObject with Mountable, playerGuid: PlanetSideGUID): Unit = {
|
||||
val playerName = player.Name
|
||||
//boot cadaver from mount on client
|
||||
context.self ! AvatarServiceResponse(
|
||||
context.self ! GenericResponseEnvelope(
|
||||
AvatarStamp,
|
||||
playerName,
|
||||
Service.defaultPlayerGUID,
|
||||
SendResponse(ObjectDetachMessage(obj.GUID, playerGuid, player.Position, Vector3.Zero))
|
||||
|
|
|
|||
|
|
@ -8,9 +8,10 @@ import net.psforever.objects.serverobject.affinity.{FactionAffinity, FactionAffi
|
|||
import net.psforever.objects.serverobject.locks.IFFLock
|
||||
import net.psforever.objects.serverobject.structures.PoweredAmenityControl
|
||||
import net.psforever.services.Service
|
||||
import net.psforever.services.base.envelope.GenericResponseEnvelope
|
||||
import net.psforever.services.base.support.SupportActor
|
||||
import net.psforever.services.local.support.{DoorCloseActor, DoorMessage}
|
||||
import net.psforever.services.local.{LocalAction, LocalServiceResponse}
|
||||
import net.psforever.services.local.{LocalAction, LocalStamp}
|
||||
|
||||
/**
|
||||
* An `Actor` that handles messages being dispatched to a specific `Door`.
|
||||
|
|
@ -116,7 +117,8 @@ object DoorControl {
|
|||
)
|
||||
} else {
|
||||
//the door should already open, but the requesting player does not see it as open
|
||||
replyTo ! LocalServiceResponse(
|
||||
replyTo ! GenericResponseEnvelope(
|
||||
LocalStamp,
|
||||
player.Name,
|
||||
Service.defaultPlayerGUID,
|
||||
LocalAction.DoorOpens(door.Zone, door)
|
||||
|
|
|
|||
|
|
@ -12,9 +12,9 @@ import net.psforever.objects.Default
|
|||
import net.psforever.objects.serverobject.structures.{Building, WarpGate}
|
||||
import net.psforever.objects.zones.Zone
|
||||
import net.psforever.packet.game.ChatMsg
|
||||
import net.psforever.services.base.envelope.MessageEnvelope
|
||||
import net.psforever.services.base.envelope.{GenericResponseEnvelope, MessageEnvelope}
|
||||
import net.psforever.services.base.message.SendResponse
|
||||
import net.psforever.services.galaxy.{GalaxyAction, GalaxyServiceResponse}
|
||||
import net.psforever.services.galaxy.{GalaxyAction, GalaxyStamp}
|
||||
import net.psforever.types.ChatMessageType
|
||||
import net.psforever.util.Config
|
||||
import net.psforever.zones.Zones
|
||||
|
|
@ -559,14 +559,17 @@ class CavernRotationService(
|
|||
val (lockedZones, unlockedZones) = managedZones.partition(_.locked)
|
||||
//borrow GalaxyService response structure, but send to the specific endpoint math.max(0, monitor.start + monitor.duration - curr)
|
||||
unlockedZones.foreach { monitor =>
|
||||
sendToSession ! GalaxyServiceResponse("", GalaxyAction.UnlockedZoneUpdate(monitor.zone))
|
||||
val resp = GalaxyAction.UnlockedZoneUpdate(monitor.zone)
|
||||
sendToSession ! GenericResponseEnvelope(GalaxyStamp, "", Service.defaultPlayerGUID, resp)
|
||||
}
|
||||
val sortedLocked = lockedZones.sortBy(z => z.start)
|
||||
sortedLocked.take(2).foreach { monitor =>
|
||||
sendToSession ! GalaxyServiceResponse("", GalaxyAction.LockedZoneUpdate(monitor.zone, math.max(0, monitor.start + monitor.duration - curr)))
|
||||
val resp = GalaxyAction.LockedZoneUpdate(monitor.zone, math.max(0, monitor.start + monitor.duration - curr))
|
||||
sendToSession ! GenericResponseEnvelope(GalaxyStamp, "", Service.defaultPlayerGUID, resp)
|
||||
}
|
||||
sortedLocked.takeRight(2).foreach { monitor =>
|
||||
sendToSession ! GalaxyServiceResponse("", GalaxyAction.LockedZoneUpdate(monitor.zone, 0L))
|
||||
val resp = GalaxyAction.LockedZoneUpdate(monitor.zone, 0L)
|
||||
sendToSession ! GenericResponseEnvelope(GalaxyStamp, "", Service.defaultPlayerGUID, resp)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
// Copyright (c) 2017 PSForever
|
||||
package net.psforever.services.avatar
|
||||
|
||||
import net.psforever.services.base.message.EventResponse
|
||||
import net.psforever.types.PlanetSideGUID
|
||||
import net.psforever.services.base.EventSystemStamp
|
||||
import net.psforever.services.base.envelope.GenericResponseEnvelope
|
||||
|
||||
final case class AvatarServiceResponse(
|
||||
channel: String,
|
||||
filter: PlanetSideGUID,
|
||||
reply: EventResponse
|
||||
) extends GenericResponseEnvelope {
|
||||
def stamp: EventSystemStamp = AvatarStamp
|
||||
}
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
package net.psforever.services.base.envelope
|
||||
|
||||
import net.psforever.services.base.EventSystemStamp
|
||||
import net.psforever.services.base.message.{EventMessage, EventResponse}
|
||||
import net.psforever.services.base.message.{EventMessage, EventResponse, SelfRespondingEvent}
|
||||
import net.psforever.types.PlanetSideGUID
|
||||
|
||||
/**
|
||||
|
|
@ -15,7 +15,7 @@ trait GenericResponseEnvelope
|
|||
/** marker indicating the routing through which the original message was processed */
|
||||
def stamp: EventSystemStamp
|
||||
/** channel information tailored to the event system */
|
||||
def outChannel: String = stamp.routing(channel)
|
||||
final def outChannel: String = stamp.routing(channel)
|
||||
}
|
||||
|
||||
object GenericResponseEnvelope {
|
||||
|
|
@ -32,6 +32,35 @@ object GenericResponseEnvelope {
|
|||
envelope.response(stamp)
|
||||
}
|
||||
|
||||
/**
|
||||
* Fake a response envelope, as if processed by a specific event system.
|
||||
* @param _stamp marker indicating the routing through which the original message was processed
|
||||
* @param _channel set of subscribers on an event system bus the envelope should reach
|
||||
* @param _filter a specific subscriber endpoint to be excluded
|
||||
* @param _reply input payload transported by this envelope
|
||||
* @return a faked but typically acceptable response envelope
|
||||
*/
|
||||
def apply(_stamp: EventSystemStamp, _channel: String, _filter: PlanetSideGUID, _reply: SelfRespondingEvent): GenericResponseEnvelope = {
|
||||
apply(_stamp, _channel, _filter, _reply.asInstanceOf[EventResponse])
|
||||
}
|
||||
|
||||
/**
|
||||
* Fake a response envelope, as if processed by a specific event system.
|
||||
* @param _stamp marker indicating the routing through which the original message was processed
|
||||
* @param _channel set of subscribers on an event system bus the envelope should reach
|
||||
* @param _filter a specific subscriber endpoint to be excluded
|
||||
* @param _reply input payload transported by this envelope
|
||||
* @return a faked but typically acceptable response envelope
|
||||
*/
|
||||
def apply(_stamp: EventSystemStamp, _channel: String, _filter: PlanetSideGUID, _reply: EventResponse): GenericResponseEnvelope = {
|
||||
new GenericResponseEnvelope {
|
||||
def channel: String = _channel
|
||||
def filter: PlanetSideGUID = _filter
|
||||
def reply: EventResponse = _reply
|
||||
def stamp: EventSystemStamp = _stamp
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The `unapply`ed data from a response envelope resembles the data from includes the filter and the channel information.
|
||||
* @param obj response envelope
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
// Copyright (c) 2017 PSForever
|
||||
package net.psforever.services.galaxy
|
||||
|
||||
import net.psforever.types.PlanetSideGUID
|
||||
import net.psforever.services.Service
|
||||
import net.psforever.services.base.message.EventResponse
|
||||
import net.psforever.services.base.EventSystemStamp
|
||||
import net.psforever.services.base.envelope.GenericResponseEnvelope
|
||||
|
||||
final case class GalaxyServiceResponse(channel: String, reply: EventResponse)
|
||||
extends GenericResponseEnvelope {
|
||||
def filter: PlanetSideGUID = Service.defaultPlayerGUID
|
||||
|
||||
def stamp: EventSystemStamp = GalaxyStamp
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
// Copyright (c) 2017 PSForever
|
||||
package net.psforever.services.local
|
||||
|
||||
import net.psforever.services.base.message.EventResponse
|
||||
import net.psforever.types.PlanetSideGUID
|
||||
import net.psforever.services.base.EventSystemStamp
|
||||
import net.psforever.services.base.envelope.GenericResponseEnvelope
|
||||
|
||||
final case class LocalServiceResponse(
|
||||
channel: String,
|
||||
filter: PlanetSideGUID,
|
||||
reply: EventResponse
|
||||
) extends GenericResponseEnvelope {
|
||||
def stamp: EventSystemStamp = LocalStamp
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
// Copyright (c) 2017 PSForever
|
||||
package net.psforever.services.vehicle
|
||||
|
||||
import net.psforever.services.base.message.EventResponse
|
||||
import net.psforever.types.PlanetSideGUID
|
||||
import net.psforever.services.base.EventSystemStamp
|
||||
import net.psforever.services.base.envelope.GenericResponseEnvelope
|
||||
|
||||
final case class VehicleServiceResponse(
|
||||
channel: String,
|
||||
filter: PlanetSideGUID,
|
||||
reply: EventResponse
|
||||
) extends GenericResponseEnvelope {
|
||||
def stamp: EventSystemStamp = VehicleStamp
|
||||
}
|
||||
|
|
@ -12,8 +12,9 @@ import net.psforever.objects.{Default, GlobalDefinitions, Player}
|
|||
import net.psforever.objects.serverobject.doors.{Door, DoorControl}
|
||||
import net.psforever.objects.serverobject.structures.{Building, StructureType}
|
||||
import net.psforever.objects.zones.{Zone, ZoneMap}
|
||||
import net.psforever.services.base.envelope.GenericResponseEnvelope
|
||||
import net.psforever.services.local.support.DoorMessage
|
||||
import net.psforever.services.local.{LocalAction, LocalServiceResponse}
|
||||
import net.psforever.services.local.LocalAction
|
||||
import net.psforever.types._
|
||||
import org.specs2.mutable.Specification
|
||||
|
||||
|
|
@ -106,7 +107,7 @@ class DoorControlAlreadyOpenTest extends ActorTest {
|
|||
door.Actor.tell(CommonMessages.Use(player), probe.ref)
|
||||
val reply = probe.receiveOne(1000 milliseconds)
|
||||
assert(reply match {
|
||||
case LocalServiceResponse("test", _, LocalAction.DoorOpens(_, thisDoor)) => thisDoor eq door
|
||||
case GenericResponseEnvelope("test", _, LocalAction.DoorOpens(_, thisDoor)) => thisDoor eq door
|
||||
case _ => false
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue