package com.faforever.client.relay; import com.faforever.client.connectivity.ConnectivityState; import com.faforever.client.net.SocketAddressUtil; import com.faforever.client.remote.domain.MessageTarget; import java.net.InetSocketAddress; import java.util.Arrays; public class ConnectivityStateMessage extends GpgServerMessage { private static final int STATE_INDEX = 0; private static final int ADDRESS_INDEX = 1; public ConnectivityStateMessage(ConnectivityState state, InetSocketAddress socketAddress) { super(GpgServerMessageType.CONNECTIVITY_STATE, Arrays.asList( state.getString(), new Object[]{socketAddress.getHostName(), socketAddress.getPort()} )); setTarget(MessageTarget.CONNECTIVITY); } public ConnectivityState getState() { return ConnectivityState.fromString(getString(STATE_INDEX)); } public InetSocketAddress getSocketAddress() { // TODO remove when sheeo finally decided how to implement it ;-) if(getArgs().get(ADDRESS_INDEX) instanceof String) { return SocketAddressUtil.fromString(getString(ADDRESS_INDEX)); } @SuppressWarnings("unchecked") Object[] hostPort = (Object[]) getArgs().get(ADDRESS_INDEX); return new InetSocketAddress((String) hostPort[0], (int) hostPort[1]); } }