mirror of
https://bitbucket.org/projectswg/cucore.git
synced 2026-10-18 10:02:57 -04:00
Merge branch 'quality_assurance' of https://bitbucket.org/projectswg/holocore into quality_assurance
This commit is contained in:
@@ -1,63 +0,0 @@
|
||||
/***********************************************************************************
|
||||
* Copyright (c) 2015 /// Project SWG /// www.projectswg.com *
|
||||
* *
|
||||
* ProjectSWG is the first NGE emulator for Star Wars Galaxies founded on *
|
||||
* July 7th, 2011 after SOE announced the official shutdown of Star Wars Galaxies. *
|
||||
* Our goal is to create an emulator which will provide a server for players to *
|
||||
* continue playing a game similar to the one they used to play. We are basing *
|
||||
* it on the final publish of the game prior to end-game events. *
|
||||
* *
|
||||
* This file is part of Holocore. *
|
||||
* *
|
||||
* -------------------------------------------------------------------------------- *
|
||||
* *
|
||||
* Holocore is free software: you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU Affero General Public License as *
|
||||
* published by the Free Software Foundation, either version 3 of the *
|
||||
* License, or (at your option) any later version. *
|
||||
* *
|
||||
* Holocore is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU Affero General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Affero General Public License *
|
||||
* along with Holocore. If not, see <http://www.gnu.org/licenses/>. *
|
||||
* *
|
||||
***********************************************************************************/
|
||||
package intents.network;
|
||||
|
||||
import resources.control.Intent;
|
||||
import resources.network.ServerType;
|
||||
import resources.network.UDPServer.UDPPacket;
|
||||
|
||||
public class InboundUdpPacketIntent extends Intent {
|
||||
|
||||
public static final String TYPE = "InboundUdpPacketIntent";
|
||||
|
||||
private UDPPacket packet;
|
||||
private ServerType type;
|
||||
|
||||
public InboundUdpPacketIntent(ServerType type, UDPPacket p) {
|
||||
super(TYPE);
|
||||
setPacket(p);
|
||||
setServerType(type);
|
||||
}
|
||||
|
||||
public void setPacket(UDPPacket p) {
|
||||
this.packet = p;
|
||||
}
|
||||
|
||||
public void setServerType(ServerType type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public UDPPacket getPacket() {
|
||||
return packet;
|
||||
}
|
||||
|
||||
public ServerType getServerType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
/***********************************************************************************
|
||||
* Copyright (c) 2015 /// Project SWG /// www.projectswg.com *
|
||||
* *
|
||||
* ProjectSWG is the first NGE emulator for Star Wars Galaxies founded on *
|
||||
* July 7th, 2011 after SOE announced the official shutdown of Star Wars Galaxies. *
|
||||
* Our goal is to create an emulator which will provide a server for players to *
|
||||
* continue playing a game similar to the one they used to play. We are basing *
|
||||
* it on the final publish of the game prior to end-game events. *
|
||||
* *
|
||||
* This file is part of Holocore. *
|
||||
* *
|
||||
* -------------------------------------------------------------------------------- *
|
||||
* *
|
||||
* Holocore is free software: you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU Affero General Public License as *
|
||||
* published by the Free Software Foundation, either version 3 of the *
|
||||
* License, or (at your option) any later version. *
|
||||
* *
|
||||
* Holocore is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU Affero General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Affero General Public License *
|
||||
* along with Holocore. If not, see <http://www.gnu.org/licenses/>. *
|
||||
* *
|
||||
***********************************************************************************/
|
||||
package intents.network;
|
||||
|
||||
import resources.control.Intent;
|
||||
import resources.network.ServerType;
|
||||
import resources.network.UDPServer.UDPPacket;
|
||||
|
||||
public class OutboundUdpPacketIntent extends Intent {
|
||||
|
||||
public static final String TYPE = "OutboundUdpPacketIntent";
|
||||
|
||||
private UDPPacket packet;
|
||||
private ServerType type;
|
||||
|
||||
public OutboundUdpPacketIntent(ServerType type, UDPPacket p) {
|
||||
super(TYPE);
|
||||
setPacket(p);
|
||||
setServerType(type);
|
||||
}
|
||||
|
||||
public void setPacket(UDPPacket p) {
|
||||
this.packet = p;
|
||||
}
|
||||
|
||||
public void setServerType(ServerType type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public UDPPacket getPacket() {
|
||||
return packet;
|
||||
}
|
||||
|
||||
public ServerType getServerType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -31,10 +31,13 @@ import intents.server.ServerStatusIntent;
|
||||
import resources.Galaxy.GalaxyStatus;
|
||||
import resources.control.IntentManager;
|
||||
import resources.control.ServerStatus;
|
||||
import resources.server_info.Log;
|
||||
import services.CoreManager;
|
||||
|
||||
public class ProjectSWG {
|
||||
|
||||
private static final String [] ENDINGS = {"B", "KB", "MB", "GB"};
|
||||
|
||||
private static ProjectSWG server;
|
||||
private final Thread mainThread;
|
||||
private CoreManager manager;
|
||||
@@ -132,6 +135,7 @@ public class ProjectSWG {
|
||||
|
||||
private void loop() {
|
||||
setStatus((manager.getGalaxyStatus() == GalaxyStatus.UP) ? ServerStatus.OPEN : ServerStatus.LOCKED);
|
||||
long iter = 0;
|
||||
while (!shutdownRequested && !manager.isShutdownRequested() && manager.isOperational()) {
|
||||
manager.flushPackets(); // Sends any packets that weren't sent
|
||||
try {
|
||||
@@ -139,9 +143,25 @@ public class ProjectSWG {
|
||||
} catch (InterruptedException e) {
|
||||
throw new CoreException("Main Thread Interrupted.");
|
||||
}
|
||||
iter++;
|
||||
if (iter % 20 == 0) {
|
||||
final Runtime r = Runtime.getRuntime();
|
||||
Log.i("ProjectSWG", "Memory Consumption: %s", getMemory((r.totalMemory()-r.freeMemory())));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private String getMemory(long bytes) {
|
||||
double val = bytes;
|
||||
int iters = 0;
|
||||
while (val >= 1024) {
|
||||
val /= 1024;
|
||||
iters++;
|
||||
}
|
||||
val = ((int) (val * 1E5)) / 1E5;
|
||||
return val + ENDINGS[iters];
|
||||
}
|
||||
|
||||
private void stop() {
|
||||
if (manager == null || status == ServerStatus.OFFLINE)
|
||||
return;
|
||||
|
||||
@@ -28,17 +28,18 @@
|
||||
package network;
|
||||
|
||||
import java.nio.ByteOrder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import network.packets.soe.Fragmented;
|
||||
import resources.SortedLinkedList;
|
||||
|
||||
public class FragmentedHandler {
|
||||
|
||||
private SortedLinkedList<Fragmented> fragPackets;
|
||||
private List<Fragmented> fragPackets;
|
||||
private int fragSize;
|
||||
|
||||
public FragmentedHandler() {
|
||||
fragPackets = new SortedLinkedList<Fragmented>();
|
||||
fragPackets = new ArrayList<Fragmented>();
|
||||
fragSize = 0;
|
||||
}
|
||||
|
||||
@@ -52,8 +53,8 @@ public class FragmentedHandler {
|
||||
if (insertIfNew(f) && getBufferedSize() == fragSize) {
|
||||
byte [] data = new byte[fragSize];
|
||||
int offset = 0;
|
||||
while (fragPackets.size() > 0 && offset < fragSize) {
|
||||
offset = spliceFragmentedIntoBuffer(fragPackets.removeFirst(), data, offset);
|
||||
for (Fragmented frag : fragPackets) {
|
||||
offset = spliceFragmentedIntoBuffer(frag, data, offset);
|
||||
}
|
||||
updateMetadata();
|
||||
return data;
|
||||
@@ -85,14 +86,14 @@ public class FragmentedHandler {
|
||||
if (fragPackets.isEmpty())
|
||||
fragSize = 0;
|
||||
else
|
||||
fragSize = fragPackets.getFirst().encode().order(ByteOrder.BIG_ENDIAN).getInt(4);
|
||||
fragSize = fragPackets.get(0).encode().order(ByteOrder.BIG_ENDIAN).getInt(4);
|
||||
}
|
||||
}
|
||||
|
||||
private int getBufferedSize() {
|
||||
int curSize = 0;
|
||||
int i = 0;
|
||||
short prevSeq = (short) (fragPackets.getFirst().getSequence()-1);
|
||||
short prevSeq = (short) (fragPackets.get(0).getSequence()-1);
|
||||
for (Fragmented frag : fragPackets) {
|
||||
// Update previous sequence and verify all in-order
|
||||
if (prevSeq+1 != frag.getSequence())
|
||||
|
||||
@@ -64,6 +64,7 @@ public class InboundNetworkHandler {
|
||||
|
||||
public synchronized void reset() {
|
||||
fragStream.reset();
|
||||
inboundQueue.clear();
|
||||
recvSequence = -1;
|
||||
crc = 0;
|
||||
}
|
||||
|
||||
@@ -47,10 +47,10 @@ public class NetworkClient {
|
||||
private int port;
|
||||
private int connId;
|
||||
|
||||
public NetworkClient(ServerType type, InetAddress addr, int port, long networkId) {
|
||||
public NetworkClient(ServerType type, InetAddress addr, int port, long networkId, PacketSender packetSender) {
|
||||
this.serverType = type;
|
||||
this.networkId = networkId;
|
||||
protocol = new NetworkProtocol(type, addr, port);
|
||||
protocol = new NetworkProtocol(type, addr, port, packetSender);
|
||||
prevPacketIntent = null;
|
||||
connId = 0;
|
||||
updateNetworkInfo(addr, port);
|
||||
|
||||
@@ -27,15 +27,13 @@
|
||||
***********************************************************************************/
|
||||
package network;
|
||||
|
||||
import intents.network.OutboundUdpPacketIntent;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import resources.control.Intent;
|
||||
import resources.network.ServerType;
|
||||
import resources.network.UDPServer.UDPPacket;
|
||||
import resources.server_info.Log;
|
||||
import network.InboundNetworkHandler.InboundEventCallback;
|
||||
import network.packets.Packet;
|
||||
import network.packets.soe.Acknowledge;
|
||||
@@ -45,21 +43,20 @@ import network.packets.soe.ServerNetworkStatusUpdate;
|
||||
|
||||
public class NetworkProtocol implements InboundEventCallback {
|
||||
|
||||
private final Object prevOutboundIntentMutex = new Object();
|
||||
private final InboundNetworkHandler inbound;
|
||||
private final OutboundNetworkHandler outbound;
|
||||
private final ServerType serverType;
|
||||
private final PacketSender packetSender;
|
||||
|
||||
private Intent prevOutboundIntent;
|
||||
private InetAddress address;
|
||||
private int port;
|
||||
private int crc;
|
||||
|
||||
public NetworkProtocol(ServerType type, InetAddress address, int port) {
|
||||
public NetworkProtocol(ServerType type, InetAddress address, int port, PacketSender packetSender) {
|
||||
this.inbound = new InboundNetworkHandler(this);
|
||||
this.outbound = new OutboundNetworkHandler();
|
||||
this.serverType = type;
|
||||
prevOutboundIntent = null;
|
||||
this.packetSender = packetSender;
|
||||
crc = 0;
|
||||
updateNetworkInfo(address, port);
|
||||
}
|
||||
@@ -92,7 +89,6 @@ public class NetworkProtocol implements InboundEventCallback {
|
||||
public void resetNetwork() {
|
||||
inbound.reset();
|
||||
outbound.reset();
|
||||
prevOutboundIntent = null;
|
||||
}
|
||||
|
||||
public List <Packet> process(byte [] data) {
|
||||
@@ -105,7 +101,7 @@ public class NetworkProtocol implements InboundEventCallback {
|
||||
|
||||
private void process(List <Packet> packets, Packet packet) {
|
||||
if (packet == null)
|
||||
return;
|
||||
throw new NullPointerException("Inbound packet cannot be null!");
|
||||
packets.add(packet);
|
||||
if (packet instanceof Acknowledge)
|
||||
outbound.onAcknowledge(((Acknowledge) packet).getSequence());
|
||||
@@ -117,21 +113,18 @@ public class NetworkProtocol implements InboundEventCallback {
|
||||
}
|
||||
|
||||
public void sendPacket(Packet packet) {
|
||||
if (address == null)
|
||||
if (address == null) {
|
||||
Log.w("NetworkProtocol", "Address is null! Cannot send packet");
|
||||
return;
|
||||
}
|
||||
outbound.assemble(packet);
|
||||
flushAssembled();
|
||||
}
|
||||
|
||||
private void send(byte [] data) {
|
||||
if (data == null)
|
||||
return;
|
||||
UDPPacket packet = new UDPPacket(address, port, data);
|
||||
OutboundUdpPacketIntent intent = new OutboundUdpPacketIntent(serverType, packet);
|
||||
synchronized (prevOutboundIntentMutex) {
|
||||
intent.broadcastAfterIntent(prevOutboundIntent);
|
||||
prevOutboundIntent = intent;
|
||||
}
|
||||
throw new NullPointerException("Outbound data cannot be null!");
|
||||
packetSender.sendPacket(serverType, new UDPPacket(address, port, data));
|
||||
}
|
||||
|
||||
private void processClientNetworkUpdate(ClientNetworkStatusUpdate update) {
|
||||
|
||||
@@ -74,7 +74,7 @@ public class OutboundNetworkHandler {
|
||||
|
||||
public synchronized void onAcknowledge(short sequence) {
|
||||
synchronized (sequenced) {
|
||||
Iterator <SequencedPacket> it = sequenced.iterator();
|
||||
Iterator <SequencedPacket> it = sequenced.listIterator();
|
||||
while (it.hasNext()) {
|
||||
SequencedPacket sp = it.next();
|
||||
if (sp.getSequence() <= sequence)
|
||||
@@ -87,7 +87,7 @@ public class OutboundNetworkHandler {
|
||||
|
||||
public synchronized void onOutOfOrder(short sequence) {
|
||||
synchronized (sequenced) {
|
||||
Iterator <SequencedPacket> it = sequenced.iterator();
|
||||
Iterator <SequencedPacket> it = sequenced.listIterator();
|
||||
while (it.hasNext()) {
|
||||
SequencedPacket sp = it.next();
|
||||
if (sp.getSequence() <= sequence)
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package network;
|
||||
|
||||
import resources.network.ServerType;
|
||||
import resources.network.UDPServer.UDPPacket;
|
||||
|
||||
public interface PacketReceiver {
|
||||
|
||||
void receivePacket(ServerType type, UDPPacket packet);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package network;
|
||||
|
||||
import resources.network.ServerType;
|
||||
import resources.network.UDPServer.UDPPacket;
|
||||
|
||||
public interface PacketSender {
|
||||
|
||||
void sendPacket(ServerType type, UDPPacket packet);
|
||||
|
||||
}
|
||||
@@ -51,6 +51,7 @@ public abstract class Intent {
|
||||
this.complete = true;
|
||||
if (sequential != null)
|
||||
sequential.broadcast();
|
||||
sequential = null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -124,6 +125,7 @@ public abstract class Intent {
|
||||
IntentManager.getInstance().broadcastIntent(this);
|
||||
if (parallel != null)
|
||||
parallel.broadcast();
|
||||
parallel = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -29,7 +29,6 @@ package services.network;
|
||||
|
||||
import intents.network.CloseConnectionIntent;
|
||||
import intents.network.InboundPacketIntent;
|
||||
import intents.network.InboundUdpPacketIntent;
|
||||
import intents.network.OutboundPacketIntent;
|
||||
|
||||
import java.net.InetAddress;
|
||||
@@ -41,6 +40,8 @@ import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
import network.NetworkClient;
|
||||
import network.PacketReceiver;
|
||||
import network.PacketSender;
|
||||
import network.packets.Packet;
|
||||
import network.packets.soe.Disconnect;
|
||||
import network.packets.soe.SessionRequest;
|
||||
@@ -52,14 +53,16 @@ import resources.control.Manager;
|
||||
import resources.network.ServerType;
|
||||
import resources.network.UDPServer.UDPPacket;
|
||||
|
||||
public class NetworkClientManager extends Manager {
|
||||
public class NetworkClientManager extends Manager implements PacketReceiver {
|
||||
|
||||
private final Map <InetAddress, List <NetworkClient>> clients;
|
||||
private final Map <Long, NetworkClient> networkClients;
|
||||
private final Random crcGenerator;
|
||||
private final PacketSender packetSender;
|
||||
private long networkId;
|
||||
|
||||
public NetworkClientManager() {
|
||||
public NetworkClientManager(PacketSender packetSender) {
|
||||
this.packetSender = packetSender;
|
||||
clients = new HashMap<InetAddress, List<NetworkClient>>();
|
||||
networkClients = new HashMap<Long, NetworkClient>();
|
||||
crcGenerator = new Random();
|
||||
@@ -68,7 +71,6 @@ public class NetworkClientManager extends Manager {
|
||||
|
||||
@Override
|
||||
public boolean initialize() {
|
||||
registerForIntent(InboundUdpPacketIntent.TYPE);
|
||||
registerForIntent(InboundPacketIntent.TYPE);
|
||||
registerForIntent(OutboundPacketIntent.TYPE);
|
||||
registerForIntent(CloseConnectionIntent.TYPE);
|
||||
@@ -83,14 +85,14 @@ public class NetworkClientManager extends Manager {
|
||||
return super.stop();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receivePacket(ServerType type, UDPPacket packet) {
|
||||
handlePacket(type, packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onIntentReceived(Intent i) {
|
||||
if (i instanceof InboundUdpPacketIntent) {
|
||||
InboundUdpPacketIntent inbound = (InboundUdpPacketIntent) i;
|
||||
UDPPacket p = inbound.getPacket();
|
||||
if (p != null) {
|
||||
handlePacket(inbound.getServerType(), p);
|
||||
}
|
||||
} else if (i instanceof OutboundPacketIntent) {
|
||||
if (i instanceof OutboundPacketIntent) {
|
||||
Packet p = ((OutboundPacketIntent)i).getPacket();
|
||||
if (p != null)
|
||||
handleOutboundPacket(((OutboundPacketIntent) i).getNetworkId(), p);
|
||||
@@ -204,7 +206,7 @@ public class NetworkClientManager extends Manager {
|
||||
|
||||
private NetworkClient createClient(ServerType type, InetAddress addr, int port) {
|
||||
synchronized (clients) {
|
||||
NetworkClient client = new NetworkClient(type, addr, port, networkId++);
|
||||
NetworkClient client = new NetworkClient(type, addr, port, networkId++, packetSender);
|
||||
List <NetworkClient> ipList = clients.get(addr);
|
||||
if (ipList == null) {
|
||||
ipList = new ArrayList<NetworkClient>();
|
||||
@@ -250,6 +252,7 @@ public class NetworkClientManager extends Manager {
|
||||
}
|
||||
}
|
||||
}
|
||||
client.resetNetwork();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -27,14 +27,13 @@
|
||||
***********************************************************************************/
|
||||
package services.network;
|
||||
|
||||
import intents.network.InboundUdpPacketIntent;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
|
||||
import network.PacketReceiver;
|
||||
import network.PacketSender;
|
||||
import resources.Galaxy;
|
||||
import resources.config.ConfigFile;
|
||||
import resources.control.Intent;
|
||||
import resources.control.Service;
|
||||
import resources.network.ServerType;
|
||||
import resources.network.UDPServer;
|
||||
@@ -42,7 +41,7 @@ import resources.network.UDPServer.UDPCallback;
|
||||
import resources.network.UDPServer.UDPPacket;
|
||||
import resources.server_info.Config;
|
||||
|
||||
public class NetworkListenerService extends Service {
|
||||
public class NetworkListenerService extends Service implements PacketSender {
|
||||
|
||||
private Server login;
|
||||
private Server zone;
|
||||
@@ -56,6 +55,12 @@ public class NetworkListenerService extends Service {
|
||||
ping = new Server(ServerType.PING);
|
||||
}
|
||||
|
||||
public void setPacketReceiver(PacketReceiver packetReceiver) {
|
||||
login.setPacketReceiver(packetReceiver);
|
||||
zone.setPacketReceiver(packetReceiver);
|
||||
ping.setPacketReceiver(packetReceiver);
|
||||
}
|
||||
|
||||
private InetAddress getBindAddr(Config c, String firstTry, String secondTry) {
|
||||
String t = firstTry;
|
||||
try {
|
||||
@@ -113,6 +118,11 @@ public class NetworkListenerService extends Service {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendPacket(ServerType type, UDPPacket packet) {
|
||||
send(type, packet.getAddress(), packet.getPort(), packet.getData());
|
||||
}
|
||||
|
||||
public void send(ServerType type, InetAddress addr, int port, byte [] data) {
|
||||
switch (type) {
|
||||
case LOGIN:
|
||||
@@ -128,14 +138,17 @@ public class NetworkListenerService extends Service {
|
||||
}
|
||||
|
||||
private class Server implements UDPCallback {
|
||||
|
||||
|
||||
private final ServerType type;
|
||||
private PacketReceiver packetReceiver;
|
||||
private UDPServer server;
|
||||
private Intent prevIntent;
|
||||
|
||||
public Server(ServerType type) {
|
||||
this.type = type;
|
||||
this.prevIntent = null;
|
||||
}
|
||||
|
||||
public void setPacketReceiver(PacketReceiver packetReceiver) {
|
||||
this.packetReceiver = packetReceiver;
|
||||
}
|
||||
|
||||
public boolean initialize(InetAddress bindAddr, int port, int maxPacket) {
|
||||
@@ -178,11 +191,8 @@ public class NetworkListenerService extends Service {
|
||||
public void onReceivedPacket(UDPPacket packet) {
|
||||
if (type == ServerType.PING)
|
||||
send(packet.getAddress(), packet.getPort(), packet.getData());
|
||||
else {
|
||||
InboundUdpPacketIntent i = new InboundUdpPacketIntent(type, packet);
|
||||
i.broadcastAfterIntent(prevIntent);
|
||||
prevIntent = i;
|
||||
}
|
||||
else
|
||||
packetReceiver.receivePacket(type, packet);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -27,12 +27,8 @@
|
||||
***********************************************************************************/
|
||||
package services.network;
|
||||
|
||||
import intents.network.OutboundUdpPacketIntent;
|
||||
import resources.Galaxy;
|
||||
import resources.control.Intent;
|
||||
import resources.control.Manager;
|
||||
import resources.network.ServerType;
|
||||
import resources.network.UDPServer.UDPPacket;
|
||||
|
||||
public class NetworkManager extends Manager {
|
||||
|
||||
@@ -41,25 +37,11 @@ public class NetworkManager extends Manager {
|
||||
|
||||
public NetworkManager(Galaxy galaxy) {
|
||||
netListenerService = new NetworkListenerService(galaxy);
|
||||
netClientManager = new NetworkClientManager();
|
||||
netClientManager = new NetworkClientManager(netListenerService);
|
||||
netListenerService.setPacketReceiver(netClientManager);
|
||||
|
||||
addChildService(netClientManager);
|
||||
addChildService(netListenerService);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean initialize() {
|
||||
registerForIntent(OutboundUdpPacketIntent.TYPE);
|
||||
return super.initialize();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onIntentReceived(Intent i) {
|
||||
if (i instanceof OutboundUdpPacketIntent) {
|
||||
UDPPacket packet = ((OutboundUdpPacketIntent) i).getPacket();
|
||||
ServerType type = ((OutboundUdpPacketIntent) i).getServerType();
|
||||
netListenerService.send(type, packet.getAddress(), packet.getPort(), packet.getData());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -328,7 +328,7 @@ public class LoginService extends Service {
|
||||
g.setName(set.getString("name"));
|
||||
g.setAddress(set.getString("address"));
|
||||
g.setPopulation(population);
|
||||
g.setTimeZone(set.getInt("timezone"));
|
||||
g.setTimeZone(set.getInt("timezone") * 3600);
|
||||
g.setZonePort(set.getInt("zone_port"));
|
||||
g.setPingPort(set.getInt("ping_port"));
|
||||
g.setStatus(set.getInt("status"));
|
||||
|
||||
Reference in New Issue
Block a user