diff --git a/src/services/admin/OnlineInterfaceService.java b/src/services/admin/OnlineInterfaceService.java index 880c1f9ae..f419b26bc 100644 --- a/src/services/admin/OnlineInterfaceService.java +++ b/src/services/admin/OnlineInterfaceService.java @@ -27,8 +27,6 @@ ***********************************************************************************/ package services.admin; -import intents.PlayerEventIntent; - import java.io.IOException; import java.net.InetAddress; import java.net.MalformedURLException; @@ -43,17 +41,17 @@ import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import intents.PlayerEventIntent; import resources.common.BCrypt; import resources.config.ConfigFile; -import resources.control.Intent; import resources.control.Service; import resources.server_info.Config; import resources.server_info.Log; import services.admin.http.HttpServer; import services.admin.http.HttpServer.HttpServerCallback; +import services.admin.http.HttpSession; import services.admin.http.HttpSocket; import services.admin.http.HttpSocket.HttpRequest; -import services.admin.http.HttpSession; import services.admin.http.HttpsServer; import utilities.ThreadUtilities; @@ -97,7 +95,7 @@ public class OnlineInterfaceService extends Service implements HttpServerCallbac return false; } executor = Executors.newSingleThreadScheduledExecutor(ThreadUtilities.newThreadFactory("ServerInterface-DataCollection")); - registerForIntent(PlayerEventIntent.TYPE); + registerForIntent(PlayerEventIntent.class, pei -> handlePlayerEventIntent(pei)); return super.initialize(); } @@ -164,22 +162,18 @@ public class OnlineInterfaceService extends Service implements HttpServerCallbac } } - @Override - public void onIntentReceived(Intent i) { - if (i instanceof PlayerEventIntent) { - PlayerEventIntent pei = (PlayerEventIntent) i; - switch (pei.getEvent()) { - case PE_ZONE_IN_CLIENT: - data.addOnlinePlayer(pei.getPlayer()); - break; - case PE_LOGGED_OUT: - data.removeOnlinePlayer(pei.getPlayer()); - break; - default: - break; - } - } - } + private void handlePlayerEventIntent(PlayerEventIntent pei){ + switch (pei.getEvent()) { + case PE_ZONE_IN_CLIENT: + data.addOnlinePlayer(pei.getPlayer()); + break; + case PE_LOGGED_OUT: + data.removeOnlinePlayer(pei.getPlayer()); + break; + default: + break; + } + } private void collectData() { data.updateResourceUsage(); diff --git a/src/services/chat/ChatMailService.java b/src/services/chat/ChatMailService.java index 25ed9006d..776135273 100644 --- a/src/services/chat/ChatMailService.java +++ b/src/services/chat/ChatMailService.java @@ -47,7 +47,6 @@ import network.packets.swg.zone.chat.ChatPersistentMessageToClient; import network.packets.swg.zone.chat.ChatPersistentMessageToServer; import network.packets.swg.zone.chat.ChatRequestPersistentMessage; import resources.chat.ChatResult; -import resources.control.Intent; import resources.control.Service; import resources.encodables.player.Mail; import resources.objects.SWGObject; @@ -76,9 +75,9 @@ public class ChatMailService extends Service { insertChatLog = chatLogs.prepareStatement("INSERT INTO chat_log VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); maxMailId = 1; - registerForIntent(GalacticPacketIntent.TYPE); - registerForIntent(PersistentMessageIntent.TYPE); - registerForIntent(PlayerEventIntent.TYPE); + registerForIntent(GalacticPacketIntent.class, gpi -> handleGalacticPacketIntent(gpi)); + registerForIntent(PersistentMessageIntent.class, pmi -> handlePersistentMessageIntent(pmi)); + registerForIntent(PlayerEventIntent.class, pei -> handlePlayerEventIntent(pei)); } @Override @@ -97,30 +96,12 @@ public class ChatMailService extends Service { return super.terminate(); } - @Override - public void onIntentReceived(Intent i) { - switch (i.getType()) { - case GalacticPacketIntent.TYPE: - if (i instanceof GalacticPacketIntent) - processPacket((GalacticPacketIntent) i); - break; - case PersistentMessageIntent.TYPE: - if (i instanceof PersistentMessageIntent) - handlePersistentMessageIntent((PersistentMessageIntent) i); - break; - case PlayerEventIntent.TYPE: - if (i instanceof PlayerEventIntent) - handlePlayerEventIntent((PlayerEventIntent) i); - break; - } - } - - private void handlePlayerEventIntent(PlayerEventIntent intent) { - Player player = intent.getPlayer(); + private void handlePlayerEventIntent(PlayerEventIntent pei) { + Player player = pei.getPlayer(); if (player == null) return; - switch (intent.getEvent()) { + switch (pei.getEvent()) { case PE_FIRST_ZONE: sendPersistentMessageHeaders(player); break; @@ -129,8 +110,8 @@ public class ChatMailService extends Service { } } - private void processPacket(GalacticPacketIntent intent) { - Packet p = intent.getPacket(); + private void handleGalacticPacketIntent(GalacticPacketIntent gpi){ + Packet p = gpi.getPacket(); if (!(p instanceof SWGPacket)) return; SWGPacket swg = (SWGPacket) p; @@ -139,11 +120,11 @@ public class ChatMailService extends Service { /* Mails */ case CHAT_PERSISTENT_MESSAGE_TO_SERVER: if (p instanceof ChatPersistentMessageToServer) - handleSendPersistentMessage(intent.getPlayerManager(), intent.getPlayer(), galaxyName, (ChatPersistentMessageToServer) p); + handleSendPersistentMessage(gpi.getPlayerManager(), gpi.getPlayer(), galaxyName, (ChatPersistentMessageToServer) p); break; case CHAT_REQUEST_PERSISTENT_MESSAGE: if (p instanceof ChatRequestPersistentMessage) - handlePersistentMessageRequest(intent.getPlayer(), galaxyName, (ChatRequestPersistentMessage) p); + handlePersistentMessageRequest(gpi.getPlayer(), galaxyName, (ChatRequestPersistentMessage) p); break; case CHAT_DELETE_PERSISTENT_MESSAGE: if (p instanceof ChatDeletePersistentMessage) @@ -188,23 +169,23 @@ public class ChatMailService extends Service { } } - private void handlePersistentMessageIntent(PersistentMessageIntent intent) { - if (intent.getReceiver() == null) + private void handlePersistentMessageIntent(PersistentMessageIntent pmi) { + if (pmi.getReceiver() == null) return; - Player recipient = intent.getReceiver().getOwner(); + Player recipient = pmi.getReceiver().getOwner(); if (recipient == null) return; - Mail mail = intent.getMail(); + Mail mail = pmi.getMail(); mail.setId(maxMailId); maxMailId++; mail.setTimestamp((int) (new Date().getTime() / 1000)); mails.add(mail); - sendPersistentMessage(recipient, mail, MailFlagType.HEADER_ONLY, intent.getGalaxy()); + sendPersistentMessage(recipient, mail, MailFlagType.HEADER_ONLY, pmi.getGalaxy()); } private void handlePersistentMessageRequest(Player player, String galaxy, ChatRequestPersistentMessage request) { diff --git a/src/services/chat/ChatManager.java b/src/services/chat/ChatManager.java index 551a47432..a1944daea 100644 --- a/src/services/chat/ChatManager.java +++ b/src/services/chat/ChatManager.java @@ -27,24 +27,29 @@ ***********************************************************************************/ package services.chat; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.Locale; + import intents.NotifyPlayersPacketIntent; import intents.PlayerEventIntent; import intents.chat.ChatAvatarRequestIntent; import intents.chat.ChatBroadcastIntent; -import intents.chat.PersistentMessageIntent; import intents.chat.SpatialChatIntent; import intents.network.GalacticPacketIntent; -import intents.server.ServerStatusIntent; import network.packets.Packet; import network.packets.swg.SWGPacket; -import network.packets.swg.zone.chat.*; +import network.packets.swg.zone.chat.ChatFriendsListUpdate; +import network.packets.swg.zone.chat.ChatInstantMessageToCharacter; +import network.packets.swg.zone.chat.ChatInstantMessageToClient; +import network.packets.swg.zone.chat.ChatOnSendInstantMessage; +import network.packets.swg.zone.chat.ChatSystemMessage; import network.packets.swg.zone.chat.ChatSystemMessage.SystemChatType; import network.packets.swg.zone.object_controller.SpatialChat; import resources.Terrain; import resources.chat.ChatAvatar; import resources.chat.ChatResult; import resources.collections.SWGList; -import resources.control.Intent; import resources.control.Manager; import resources.encodables.OutOfBandPackage; import resources.encodables.ProsePackage; @@ -58,10 +63,6 @@ import resources.server_info.RelationalServerFactory; import services.CoreManager; import services.player.PlayerManager; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.util.Locale; - public class ChatManager extends Manager { private final ChatRoomService roomService; @@ -78,61 +79,34 @@ public class ChatManager extends Manager { addChildService(roomService); addChildService(mailService); - registerForIntent(GalacticPacketIntent.TYPE); - registerForIntent(SpatialChatIntent.TYPE); - registerForIntent(PersistentMessageIntent.TYPE); - registerForIntent(PlayerEventIntent.TYPE); - registerForIntent(ChatBroadcastIntent.TYPE); - registerForIntent(ServerStatusIntent.TYPE); - registerForIntent(ChatAvatarRequestIntent.TYPE); + registerForIntent(GalacticPacketIntent.class, gpi -> handleGalacticPacketIntent(gpi)); + registerForIntent(SpatialChatIntent.class, spi -> handleSpatialChatIntent(spi)); + registerForIntent(PlayerEventIntent.class, pei -> handlePlayerEventIntent(pei)); + registerForIntent(ChatBroadcastIntent.class, cbi -> handleChatBroadcastIntent(cbi)); + registerForIntent(ChatAvatarRequestIntent.class, cari -> handleChatAvatarRequestIntent(cari)); } - public void onIntentReceived(Intent i) { - switch (i.getType()) { - case GalacticPacketIntent.TYPE: - if (i instanceof GalacticPacketIntent) - processPacket((GalacticPacketIntent) i); - break; - case SpatialChatIntent.TYPE: - if (i instanceof SpatialChatIntent) - handleSpatialChat((SpatialChatIntent) i); - break; - case PlayerEventIntent.TYPE: - if (i instanceof PlayerEventIntent) - handlePlayerEventIntent((PlayerEventIntent) i); - break; - case ChatBroadcastIntent.TYPE: - if (i instanceof ChatBroadcastIntent) - handleChatBroadcast((ChatBroadcastIntent) i); - break; - case ChatAvatarRequestIntent.TYPE: - if (i instanceof ChatAvatarRequestIntent) - handleChatAvatarStatusRequestIntent((ChatAvatarRequestIntent) i); - break; - } - } - - private void processPacket(GalacticPacketIntent intent) { - Packet p = intent.getPacket(); + private void handleGalacticPacketIntent(GalacticPacketIntent gpi) { + Packet p = gpi.getPacket(); if (!(p instanceof SWGPacket)) return; SWGPacket swg = (SWGPacket) p; switch (swg.getPacketType()) { case CHAT_INSTANT_MESSAGE_TO_CHARACTER: if (p instanceof ChatInstantMessageToCharacter) - handleInstantMessage(intent.getPlayerManager(), intent.getPlayer(), (ChatInstantMessageToCharacter) p); + handleInstantMessage(gpi.getPlayerManager(), gpi.getPlayer(), (ChatInstantMessageToCharacter) p); break; default: break; } } - private void handlePlayerEventIntent(PlayerEventIntent intent) { - Player player = intent.getPlayer(); + private void handlePlayerEventIntent(PlayerEventIntent pei) { + Player player = pei.getPlayer(); if (player == null) return; - switch (intent.getEvent()) { + switch (pei.getEvent()) { case PE_FIRST_ZONE: updateChatAvatarStatus(player, true); break; @@ -145,51 +119,51 @@ public class ChatManager extends Manager { } } - private void handleChatBroadcast(ChatBroadcastIntent i) { - switch(i.getBroadcastType()) { + private void handleChatBroadcastIntent(ChatBroadcastIntent cbi) { + switch(cbi.getBroadcastType()) { case AREA: - broadcastAreaMessage(i.getMessage(), i.getBroadcaster()); - logChat(i.getBroadcaster(), ChatType.SYSTEM, ChatRange.LOCAL, i.getMessage()); + broadcastAreaMessage(cbi.getMessage(), cbi.getBroadcaster()); + logChat(cbi.getBroadcaster(), ChatType.SYSTEM, ChatRange.LOCAL, cbi.getMessage()); break; case PLANET: - broadcastPlanetMessage(i.getMessage(), i.getTerrain()); - logChat(i.getBroadcaster(), ChatType.SYSTEM, ChatRange.TERRAIN, i.getMessage()); + broadcastPlanetMessage(cbi.getMessage(), cbi.getTerrain()); + logChat(cbi.getBroadcaster(), ChatType.SYSTEM, ChatRange.TERRAIN, cbi.getMessage()); break; case GALAXY: - broadcastGalaxyMessage(i.getMessage()); - logChat(i.getBroadcaster(), ChatType.SYSTEM, ChatRange.GALAXY, i.getMessage()); + broadcastGalaxyMessage(cbi.getMessage()); + logChat(cbi.getBroadcaster(), ChatType.SYSTEM, ChatRange.GALAXY, cbi.getMessage()); break; case PERSONAL: - broadcastPersonalMessage(i.getProse(), i.getBroadcaster(), i.getMessage()); - logChat(i.getBroadcaster(), ChatType.SYSTEM, ChatRange.PERSONAL, i.getMessage()); + broadcastPersonalMessage(cbi.getProse(), cbi.getBroadcaster(), cbi.getMessage()); + logChat(cbi.getBroadcaster(), ChatType.SYSTEM, ChatRange.PERSONAL, cbi.getMessage()); break; } } - private void handleChatAvatarStatusRequestIntent(ChatAvatarRequestIntent i) { - switch (i.getRequestType()) { + private void handleChatAvatarRequestIntent(ChatAvatarRequestIntent cari) { + switch (cari.getRequestType()) { case TARGET_STATUS: { - Player player = i.getPlayer(); - sendTargetAvatarStatus(player, new ChatAvatar(0, i.getTarget(), CoreManager.getGalaxy().getName())); + Player player = cari.getPlayer(); + sendTargetAvatarStatus(player, new ChatAvatar(0, cari.getTarget(), CoreManager.getGalaxy().getName())); break; } case FRIEND_ADD_TARGET: - handleAddFriend(i.getPlayer(), i.getTarget()); + handleAddFriend(cari.getPlayer(), cari.getTarget()); break; case FRIEND_REMOVE_TARGET: - handleRemoveFriend(i.getPlayer(), i.getTarget()); + handleRemoveFriend(cari.getPlayer(), cari.getTarget()); break; case FRIEND_LIST: - handleRequestFriendList(i.getPlayer()); + handleRequestFriendList(cari.getPlayer()); break; case IGNORE_REMOVE_TARGET: - handleRemoveIgnored(i.getPlayer(), i.getTarget()); + handleRemoveIgnored(cari.getPlayer(), cari.getTarget()); break; case IGNORE_ADD_TARGET: - handleAddIgnored(i.getPlayer(), i.getTarget()); + handleAddIgnored(cari.getPlayer(), cari.getTarget()); break; case IGNORE_LIST: - handleRequestIgnoreList(i.getPlayer()); + handleRequestIgnoreList(cari.getPlayer()); break; } } @@ -305,14 +279,14 @@ public class ChatManager extends Manager { new ChatBroadcastIntent(player, new ProsePackage("StringId", stringId, "TT", target)).broadcast(); } - private void handleSpatialChat(SpatialChatIntent i) { - Player sender = i.getPlayer(); + private void handleSpatialChatIntent(SpatialChatIntent spi) { + Player sender = spi.getPlayer(); SWGObject actor = sender.getCreatureObject(); // Send to self - SpatialChat message = new SpatialChat(actor.getObjectId(), actor.getObjectId(), 0, i.getMessage(), (short) i.getChatType(), (short) i.getMoodId()); + SpatialChat message = new SpatialChat(actor.getObjectId(), actor.getObjectId(), 0, spi.getMessage(), (short) spi.getChatType(), (short) spi.getMoodId()); sender.sendPacket(message); - logChat(sender, ChatType.SPATIAL, ChatRange.LOCAL, i.getMessage()); + logChat(sender, ChatType.SPATIAL, ChatRange.LOCAL, spi.getMessage()); String senderName = ChatAvatar.getFromPlayer(sender).getName(); diff --git a/src/services/chat/ChatRoomService.java b/src/services/chat/ChatRoomService.java index d18a508bc..87a5fa735 100644 --- a/src/services/chat/ChatRoomService.java +++ b/src/services/chat/ChatRoomService.java @@ -114,9 +114,9 @@ public class ChatRoomService extends Service { insertChatLog = chatLogs.prepareStatement("INSERT INTO chat_log VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); maxChatRoomId = 1; - registerForIntent(ChatRoomUpdateIntent.TYPE); - registerForIntent(GalacticPacketIntent.TYPE); - registerForIntent(PlayerEventIntent.TYPE); + registerForIntent(ChatRoomUpdateIntent.class, crui -> handleChatRoomUpdateIntent(crui)); + registerForIntent(GalacticPacketIntent.class, gpi -> handleGalacticPacketIntent(gpi)); + registerForIntent(PlayerEventIntent.class, pei -> handlePlayerEventIntent(pei)); } @Override @@ -138,28 +138,10 @@ public class ChatRoomService extends Service { return super.terminate(); } - @Override - public void onIntentReceived(Intent i) { - switch(i.getType()) { - case ChatRoomUpdateIntent.TYPE: - if (i instanceof ChatRoomUpdateIntent) - processChatRoomUpdateIntent((ChatRoomUpdateIntent) i); - break; - case GalacticPacketIntent.TYPE: - if (i instanceof GalacticPacketIntent) - processPacket((GalacticPacketIntent) i); - break; - case PlayerEventIntent.TYPE: - if (i instanceof PlayerEventIntent) - handlePlayerEventIntent((PlayerEventIntent) i); - break; - } - } - - private void processPacket(GalacticPacketIntent intent) { - Packet p = intent.getPacket(); + private void handleGalacticPacketIntent(GalacticPacketIntent gpi) { + Packet p = gpi.getPacket(); if (p instanceof SWGPacket) - processSwgPacket(intent.getPlayer(), (SWGPacket) p); + processSwgPacket(gpi.getPlayer(), (SWGPacket) p); } private void processSwgPacket(Player player, SWGPacket p) { @@ -212,12 +194,12 @@ public class ChatRoomService extends Service { } } - private void handlePlayerEventIntent(PlayerEventIntent intent) { - Player player = intent.getPlayer(); + private void handlePlayerEventIntent(PlayerEventIntent pei) { + Player player = pei.getPlayer(); if (player == null) return; - switch (intent.getEvent()) { + switch (pei.getEvent()) { case PE_ZONE_IN_SERVER: enterPlanetaryChatChannels(player); break; @@ -230,13 +212,13 @@ public class ChatRoomService extends Service { } } - private void processChatRoomUpdateIntent(ChatRoomUpdateIntent i) { - switch(i.getUpdateType()) { - case CREATE: createRoom(i.getAvatar(), i.isPublic(), i.getPath(), i.getTitle()); break; - case DESTROY: notifyDestroyRoom(i.getAvatar(), i.getPath(), 0); break; - case JOIN: enterChatChannel(i.getPlayer(), i.getPath(), i.isIgnoreInvitation()); break; - case LEAVE: leaveChatChannel(i.getPlayer(), i.getPath()); break; - case SEND_MESSAGE: sendMessageToRoom(i.getPlayer(), getRoom(i.getPath()), 0, i.getMessage(), new OutOfBandPackage()); break; + private void handleChatRoomUpdateIntent(ChatRoomUpdateIntent crui) { + switch(crui.getUpdateType()) { + case CREATE: createRoom(crui.getAvatar(), crui.isPublic(), crui.getPath(), crui.getTitle()); break; + case DESTROY: notifyDestroyRoom(crui.getAvatar(), crui.getPath(), 0); break; + case JOIN: enterChatChannel(crui.getPlayer(), crui.getPath(), crui.isIgnoreInvitation()); break; + case LEAVE: leaveChatChannel(crui.getPlayer(), crui.getPath()); break; + case SEND_MESSAGE: sendMessageToRoom(crui.getPlayer(), getRoom(crui.getPath()), 0, crui.getMessage(), new OutOfBandPackage()); break; default: break; } } diff --git a/src/services/galaxy/GalacticManager.java b/src/services/galaxy/GalacticManager.java index 0a9366e06..b97ed7795 100644 --- a/src/services/galaxy/GalacticManager.java +++ b/src/services/galaxy/GalacticManager.java @@ -34,7 +34,6 @@ import intents.network.ConnectionOpenedIntent; import intents.network.GalacticPacketIntent; import intents.network.InboundPacketIntent; import resources.control.Assert; -import resources.control.Intent; import resources.control.Manager; import resources.player.Player; import resources.server_info.SynchronizedMap; @@ -76,9 +75,9 @@ public class GalacticManager extends Manager { addChildService(developerService); addChildService(uniformBox); - registerForIntent(InboundPacketIntent.TYPE); - registerForIntent(ConnectionOpenedIntent.TYPE); - registerForIntent(ConnectionClosedIntent.TYPE); + registerForIntent(InboundPacketIntent.class, ipi -> handleInboundPacketIntent(ipi)); + registerForIntent(ConnectionOpenedIntent.class, coi -> handleConnectionOpenedIntent(coi)); + registerForIntent(ConnectionClosedIntent.class, cci -> handleConnectionClosedIntent(cci)); } @Override @@ -87,21 +86,22 @@ public class GalacticManager extends Manager { return super.initialize(); } - @Override - public void onIntentReceived(Intent i) { - if (i instanceof InboundPacketIntent) { - Player player = playerManager.getPlayerFromNetworkId(((InboundPacketIntent) i).getNetworkId()); - Assert.notNull(player); - GalacticPacketIntent g = new GalacticPacketIntent(((InboundPacketIntent) i).getPacket(), player); - g.setGalacticManager(this); - prevIntentMap.get(player.getNetworkId()).broadcastAfter(g); - } else if (i instanceof ConnectionClosedIntent) { - prevIntentMap.remove(((ConnectionClosedIntent) i).getNetworkId()).reset(); - } else if (i instanceof ConnectionOpenedIntent) { - IntentChain chain = new IntentChain(); - chain.waitUntilComplete(i); - prevIntentMap.put(((ConnectionOpenedIntent) i).getNetworkId(), chain); - } + private void handleInboundPacketIntent(InboundPacketIntent ipi){ + Player player = playerManager.getPlayerFromNetworkId(((InboundPacketIntent) ipi).getNetworkId()); + Assert.notNull(player); + GalacticPacketIntent g = new GalacticPacketIntent(((InboundPacketIntent) ipi).getPacket(), player); + g.setGalacticManager(this); + prevIntentMap.get(player.getNetworkId()).broadcastAfter(g); + } + + private void handleConnectionOpenedIntent(ConnectionOpenedIntent coi){ + IntentChain chain = new IntentChain(); + chain.waitUntilComplete(coi); + prevIntentMap.put(((ConnectionOpenedIntent) coi).getNetworkId(), chain); + } + + private void handleConnectionClosedIntent(ConnectionClosedIntent cci){ + prevIntentMap.remove(((ConnectionClosedIntent) cci).getNetworkId()).reset(); } public ObjectManager getObjectManager() {