blob: 5f5d1541080c70dfa92a0e9b8a24f3f3ce927439 [file] [log] [blame] [raw]
package protocolsupport.protocol;
import java.net.InetSocketAddress;
import org.bukkit.entity.Player;
import io.netty.channel.Channel;
import io.netty.util.AttributeKey;
import protocolsupport.api.Connection;
import protocolsupport.api.ProtocolVersion;
import protocolsupport.zplatform.network.NetworkManagerWrapper;
public abstract class ConnectionImpl extends Connection {
protected static final AttributeKey<ConnectionImpl> key = AttributeKey.valueOf("PSConnectionImpl");
protected final NetworkManagerWrapper networkmanager;
public ConnectionImpl(NetworkManagerWrapper networkmanager) {
this.networkmanager = networkmanager;
}
@Override
public Object getNetworkManager() {
return networkmanager.unwrap();
}
@Override
public boolean isConnected() {
return networkmanager.isConnected();
}
@Override
public InetSocketAddress getAddress() {
return networkmanager.getAddress();
}
@Override
public Player getPlayer() {
return networkmanager.getBukkitPlayer();
}
public static ConnectionImpl getFromChannel(Channel channel) {
return channel.attr(key).get();
}
public void storeInChannel(Channel channel) {
channel.attr(key).set(this);
}
public void setVersion(ProtocolVersion version) {
this.version = version;
}
public boolean handlePacketSend(Object packet) {
boolean canSend = true;
for (PacketSendListener listener : sendListeners) {
try {
if (!listener.onPacketSending(packet)) {
canSend = false;
}
} catch (Throwable t) {
System.err.println("Error occured while handling packet sending");
t.printStackTrace();
}
}
return canSend;
}
public boolean handlePacketReceive(Object packet) {
boolean canReceive = true;
for (PacketReceiveListener listener : receiveListeners) {
try {
if (!listener.onPacketReceiving(packet)) {
canReceive = false;
}
} catch (Throwable t) {
System.err.println("Error occured while handling packet receiving");
t.printStackTrace();
}
}
return canReceive;
}
}