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.PacketChangePassword; import kubach.packet.PacketChangePasswordResponse; 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.ChangePasswordWorker.ChangePasswordState; /** * Sends auth request and checks result * * @author Cr0s */ public class ChangePasswordWorker extends SwingWorker<Void, ChangePasswordState> { public String username, session, newPassword; public MainFrame mf; public ChangePasswordWorker(MainFrame f, String username, String session, String newPassword) { this.mf = f; this.username = username; this.session = session; this.newPassword = newPassword; } @Override protected Void doInBackground() throws Exception { final int BUFFER_SIZE = 10000; Client client = new Client(BUFFER_SIZE, BUFFER_SIZE); 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.getKryo().register(PacketChangePassword.class); client.getKryo().register(PacketChangePasswordResponse.class); client.addListener(new Listener() { @Override public void received(Connection connection, Object object) { if (object instanceof PacketChangePasswordResponse) { PacketChangePasswordResponse response = (PacketChangePasswordResponse) object; publish(new ChangePasswordState(response.isSuccess)); connection.close(); } } }); client.start(); try { client.connect(5000, Constants.SERVER_HOST, Constants.SERVER_PORT); } catch (Exception e) { e.printStackTrace(); return null; } PacketChangePassword pcp = new PacketChangePassword(); pcp.username = this.username; pcp.session = this.session; pcp.newPassword = this.newPassword; client.sendTCP(pcp); return null; } class ChangePasswordState { public boolean isSuccess; public ChangePasswordState(boolean isSuccess) { this.isSuccess = isSuccess; } } @Override protected void process(List<ChangePasswordState> l) { for (ChangePasswordState ls : l) { this.mf.parsePasswordChangeResult(ls.isSuccess); return; } } }