package kubach.workers; import com.esotericsoftware.kryonet.Client; import com.esotericsoftware.kryonet.Connection; import com.esotericsoftware.kryonet.Listener; import java.util.List; import javax.swing.SwingWorker; import kubach.Constants; import kubach.gui.MainFrame; import kubach.packet.PacketCaptchaImage; import kubach.packet.PacketFilesList; import kubach.packet.PacketFilesListRequest; import kubach.packet.PacketLogin; import kubach.packet.PacketLoginResponse; import kubach.packet.PacketRegister; import kubach.packet.PacketRegistered; import kubach.packet.PacketRequestCaptcha; import kubach.workers.AuthWorker.LoginState; /** * Sends auth request and checks result * * @author Cr0s */ public class AuthWorker extends SwingWorker<Void, LoginState> { public String login, password; public MainFrame mf; public AuthWorker(MainFrame f, String login, String password) { this.mf = f; this.login = login; this.password = password; } @Override protected Void doInBackground() throws Exception { Client client = new Client(); client.getKryo().register(PacketLogin.class); client.getKryo().register(PacketLoginResponse.class); client.getKryo().register(PacketRequestCaptcha.class); client.getKryo().register(PacketCaptchaImage.class); client.getKryo().register(byte[].class); client.getKryo().register(PacketRegister.class); client.getKryo().register(PacketRegistered.class); client.getKryo().register(PacketFilesListRequest.class); client.getKryo().register(PacketFilesList.class); client.getKryo().register(String[].class); client.addListener(new Listener() { @Override public void received(Connection connection, Object object) { if (object instanceof PacketLoginResponse) { PacketLoginResponse response = (PacketLoginResponse) object; System.out.println(response.isSuccess + " : " + response.reason + " : " + response.session); publish(new LoginState(response)); connection.close(); } } }); client.start(); try { client.connect(5000, Constants.SERVER_HOST, Constants.SERVER_PORT); client.sendTCP(new PacketLogin(login, password)); } catch (Exception e) { PacketLoginResponse response = new PacketLoginResponse(); response.isSuccess = false; response.reason = e.toString(); response.session = ""; publish(new LoginState(response)); e.printStackTrace(); return null; } return null; } class LoginState { public PacketLoginResponse p; public LoginState(PacketLoginResponse p) { this.p = p; } } @Override protected void process(List<LoginState> l) { for (LoginState ls : l) { this.mf.showLoginResult(ls.p); } } }