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.RequestFilesListWorker.FilesListState; /** * Sends auth request and checks result * * @author Cr0s */ public class RequestFilesListWorker extends SwingWorker<Void, FilesListState> { public String prefix; public MainFrame mf; public RequestFilesListWorker(MainFrame f, String prefix) { this.mf = f; this.prefix = prefix; } @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.addListener(new Listener() { @Override public void received(Connection connection, Object object) { if (object instanceof PacketFilesList) { PacketFilesList response = (PacketFilesList) object; System.out.println("[Sync] Got files: " + response.numFiles + " | " + response.files); publish(new FilesListState(response)); connection.close(); } } }); client.start(); try { client.connect(5000, Constants.SERVER_HOST, Constants.SERVER_PORT); } catch (Exception e) { e.printStackTrace(); return null; } Thread.sleep(1000); PacketFilesListRequest req = new PacketFilesListRequest(); req.clientPrefix = this.prefix; client.sendTCP(req); return null; } class FilesListState { public PacketFilesList p; public FilesListState(PacketFilesList p) { this.p = p; } } @Override protected void process(List<FilesListState> l) { for (FilesListState ls : l) { this.mf.parseFilesList(ls.p); } } }