mirror of
https://github.com/tonikelope/megabasterd.git
synced 2025-05-23 18:16:18 +02:00
1.11
Pre process transferences don't block
This commit is contained in:
parent
080da5d291
commit
6f8157b739
@ -57,7 +57,7 @@ import static megabasterd.Transference.MAX_TRANSFERENCE_SPEED_DEFAULT;
|
||||
*/
|
||||
public final class MainPanel {
|
||||
|
||||
public static final String VERSION="1.10";
|
||||
public static final String VERSION="1.11";
|
||||
public static final int CONNECTION_TIMEOUT = 30000;
|
||||
public static final int THROTTLE_SLICE_SIZE=16*1024;
|
||||
public static final int STREAMER_PORT = 1337;
|
||||
|
@ -8,7 +8,6 @@ import java.awt.event.WindowEvent;
|
||||
import static java.awt.event.WindowEvent.WINDOW_CLOSING;
|
||||
import java.io.File;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
@ -29,7 +28,6 @@ import static megabasterd.CryptTools.decryptMegaDownloaderLink;
|
||||
import static megabasterd.DBTools.deleteMegaAccount;
|
||||
import static megabasterd.MainPanel.FONT_DEFAULT;
|
||||
import static megabasterd.MainPanel.ICON_FILE;
|
||||
import static megabasterd.MainPanel.THREAD_POOL;
|
||||
import static megabasterd.MainPanel.VERSION;
|
||||
import static megabasterd.MiscTools.BASE642Bin;
|
||||
import static megabasterd.MiscTools.bin2i32a;
|
||||
@ -502,16 +500,12 @@ public final class MainPanelView extends javax.swing.JFrame {
|
||||
|
||||
if(dialog.isDownload()) {
|
||||
|
||||
getMain_panel().getDownload_manager().setPreprocessing_transferences(true);
|
||||
|
||||
final MainPanelView tthis = this;
|
||||
|
||||
THREAD_POOL.execute(new Runnable(){
|
||||
Runnable run = new Runnable(){
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
swingReflectionInvoke("setText", status_down_label, "Pre-processing downloads, please wait...");
|
||||
|
||||
Set<String> urls = new HashSet(findAllRegex("(?:https?|mega)://[^/]*/(#.*?)?!.+![^\r\n]+", dialog.getLinks_textarea().getText(), 0));
|
||||
|
||||
Set<String> megadownloader = new HashSet(findAllRegex("mega://enc.*?[^\r\n]+", dialog.getLinks_textarea().getText(), 0));
|
||||
@ -529,7 +523,9 @@ public final class MainPanelView extends javax.swing.JFrame {
|
||||
|
||||
if(!urls.isEmpty()) {
|
||||
|
||||
int conta_downloads = 0;
|
||||
getMain_panel().getDownload_manager().addPre_count(urls.size());
|
||||
|
||||
getMain_panel().getDownload_manager().secureNotify();
|
||||
|
||||
for (String url : urls ) {
|
||||
|
||||
@ -558,8 +554,6 @@ public final class MainPanelView extends javax.swing.JFrame {
|
||||
download = new Download(getMain_panel(), (String)folder_link.get("url"), dl_path, (String)folder_link.get("filename"), (String)folder_link.get("filekey"), (long)folder_link.get("filesize"), null, null, getMain_panel().isUse_slots_down(), getMain_panel().getDefault_slots_down(), true);
|
||||
|
||||
getMain_panel().getDownload_manager().getTransference_provision_queue().add(download);
|
||||
|
||||
conta_downloads++;
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,39 +561,32 @@ public final class MainPanelView extends javax.swing.JFrame {
|
||||
|
||||
fdialog.dispose();
|
||||
|
||||
|
||||
} else {
|
||||
|
||||
download = new Download(getMain_panel(), url, dl_path, null, null, null, null, null, getMain_panel().isUse_slots_down(), getMain_panel().getDefault_slots_down(), false);
|
||||
|
||||
getMain_panel().getDownload_manager().getTransference_provision_queue().add(download);
|
||||
|
||||
conta_downloads++;
|
||||
}
|
||||
}
|
||||
|
||||
if(conta_downloads > 0) {
|
||||
|
||||
swingReflectionInvoke("setText", status_down_label, "Starting downloads provisioning, please wait...");
|
||||
getMain_panel().getDownload_manager().addPre_count(-1);
|
||||
|
||||
getMain_panel().getDownload_manager().secureNotify();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
swingReflectionInvoke("setText", status_down_label, "");
|
||||
}};
|
||||
|
||||
getMain_panel().getDownload_manager().getTransference_preprocess_queue().add(run);
|
||||
|
||||
getMain_panel().getDownload_manager().secureNotify();
|
||||
|
||||
swingReflectionInvoke("setEnabled", new_download_menu, true);
|
||||
|
||||
getMain_panel().getDownload_manager().setPreprocessing_transferences(false);
|
||||
|
||||
}});
|
||||
} else {
|
||||
swingReflectionInvoke("setEnabled", new_download_menu, true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
dialog.dispose();
|
||||
|
||||
}//GEN-LAST:event_new_download_menuActionPerformed
|
||||
@ -722,9 +709,9 @@ public final class MainPanelView extends javax.swing.JFrame {
|
||||
|
||||
if(dialog.isUpload() && dialog.getFiles().size() > 0) {
|
||||
|
||||
getMain_panel().getUpload_manager().setPreprocessing_transferences(true);
|
||||
getMain_panel().getUpload_manager().addPre_count(dialog.getFiles().size());
|
||||
|
||||
swingReflectionInvoke("setText", status_up_label, "Pre-processing uploads, please wait...");
|
||||
getMain_panel().getUpload_manager().secureNotify();
|
||||
|
||||
final String mega_account = (String)dialog.getAccount_combobox().getSelectedItem();
|
||||
|
||||
@ -734,17 +721,13 @@ public final class MainPanelView extends javax.swing.JFrame {
|
||||
|
||||
final String dir_name=dialog.getDir_name_textfield().getText();
|
||||
|
||||
|
||||
final int[] mega_aes_pass = bin2i32a(BASE642Bin((String)data_account.get("password_aes")));
|
||||
|
||||
|
||||
final String mega_user_hash = (String)data_account.get("user_hash");
|
||||
|
||||
final ArrayList<File> files = dialog.getFiles();
|
||||
|
||||
jTabbedPane1.setSelectedIndex(1);
|
||||
|
||||
THREAD_POOL.execute(new Runnable(){
|
||||
Runnable run = new Runnable(){
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
@ -760,7 +743,7 @@ public final class MainPanelView extends javax.swing.JFrame {
|
||||
|
||||
byte[] share_key = ma.genShareKey();
|
||||
|
||||
HashMap<String,Object> res = ma.createDir(dir_name!=null?dir_name:files.get(0).getName()+"_"+genID(10), ma.getRoot_id(), parent_key, i32a2bin(ma.getMaster_key()));
|
||||
HashMap<String,Object> res = ma.createDir(dir_name!=null?dir_name:dialog.getFiles().get(0).getName()+"_"+genID(10), ma.getRoot_id(), parent_key, i32a2bin(ma.getMaster_key()));
|
||||
|
||||
String parent_node = (String)((Map)((List)res.get("f")).get(0)).get("h");
|
||||
|
||||
@ -772,11 +755,7 @@ public final class MainPanelView extends javax.swing.JFrame {
|
||||
|
||||
MegaDirNode file_paths = new MegaDirNode(parent_node);
|
||||
|
||||
int conta = 1;
|
||||
|
||||
for(File f:files) {
|
||||
|
||||
swingReflectionInvoke("setText", status_up_label, "Pre-processing ("+(conta++)+"/"+files.size()+") uploads, please wait...");
|
||||
for(File f:dialog.getFiles()) {
|
||||
|
||||
String file_path = f.getParentFile().getAbsolutePath().replace(base_path, "");
|
||||
|
||||
@ -815,23 +794,26 @@ public final class MainPanelView extends javax.swing.JFrame {
|
||||
|
||||
getMain_panel().getUpload_manager().getTransference_provision_queue().add(upload);
|
||||
|
||||
}
|
||||
|
||||
swingReflectionInvoke("setText", status_up_label, "Starting uploads provisioning, please wait...");
|
||||
getMain_panel().getUpload_manager().addPre_count(-1);
|
||||
|
||||
getMain_panel().getUpload_manager().secureNotify();
|
||||
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
getLogger(MainPanelView.class.getName()).log(SEVERE, null, ex);
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
getMain_panel().getUpload_manager().getTransference_preprocess_queue().add(run);
|
||||
|
||||
getMain_panel().getUpload_manager().secureNotify();
|
||||
|
||||
swingReflectionInvoke("setEnabled", new_upload_menu, true);
|
||||
|
||||
getMain_panel().getUpload_manager().setPreprocessing_transferences(false);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
} else {
|
||||
swingReflectionInvoke("setEnabled", new_upload_menu, true);
|
||||
|
@ -21,6 +21,7 @@ abstract public class TransferenceManager implements Runnable, SecureNotifiable
|
||||
private final ConcurrentLinkedQueue<Transference> _transference_remove_queue;
|
||||
private final ConcurrentLinkedQueue<Transference> _transference_finished_queue;
|
||||
private final ConcurrentLinkedQueue<Transference> _transference_running_list;
|
||||
private final ConcurrentLinkedQueue<Runnable> _transference_preprocess_queue;
|
||||
private final javax.swing.JPanel _scroll_panel;
|
||||
private final javax.swing.JLabel _status;
|
||||
private final javax.swing.JButton _close_all_button;
|
||||
@ -34,6 +35,7 @@ abstract public class TransferenceManager implements Runnable, SecureNotifiable
|
||||
private volatile boolean _provisioning_transferences;
|
||||
private volatile boolean _starting_transferences;
|
||||
private volatile boolean _preprocessing_transferences;
|
||||
private volatile int _pre_count;
|
||||
|
||||
abstract public void provision(Transference transference);
|
||||
|
||||
@ -67,12 +69,21 @@ abstract public class TransferenceManager implements Runnable, SecureNotifiable
|
||||
_preprocessing_transferences = preprocessing;
|
||||
}
|
||||
|
||||
public ConcurrentLinkedQueue<Runnable> getTransference_preprocess_queue() {
|
||||
return _transference_preprocess_queue;
|
||||
}
|
||||
|
||||
public synchronized void addPre_count(int pre_count) {
|
||||
_pre_count+=pre_count;
|
||||
}
|
||||
|
||||
public TransferenceManager(MainPanel main_panel, int max_running_trans, javax.swing.JLabel status, javax.swing.JPanel scroll_panel, javax.swing.JButton close_all_button, javax.swing.JButton pause_all_button, javax.swing.MenuElement clean_all_menu) {
|
||||
_notified = false;
|
||||
_removing_transferences = false;
|
||||
_provisioning_transferences = false;
|
||||
_starting_transferences=false;
|
||||
_preprocessing_transferences=false;
|
||||
_pre_count=0;
|
||||
_main_panel = main_panel;
|
||||
_max_running_trans = max_running_trans;
|
||||
_scroll_panel = scroll_panel;
|
||||
@ -86,6 +97,7 @@ abstract public class TransferenceManager implements Runnable, SecureNotifiable
|
||||
_transference_remove_queue = new ConcurrentLinkedQueue();
|
||||
_transference_finished_queue = new ConcurrentLinkedQueue();
|
||||
_transference_running_list = new ConcurrentLinkedQueue();
|
||||
_transference_preprocess_queue = new ConcurrentLinkedQueue();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -132,6 +144,10 @@ abstract public class TransferenceManager implements Runnable, SecureNotifiable
|
||||
return _main_panel;
|
||||
}
|
||||
|
||||
public boolean isPreprocessing_transferences() {
|
||||
return _preprocessing_transferences;
|
||||
}
|
||||
|
||||
public ConcurrentLinkedQueue<Transference> getTransference_provision_queue() {
|
||||
return _transference_provision_queue;
|
||||
}
|
||||
@ -250,10 +266,8 @@ abstract public class TransferenceManager implements Runnable, SecureNotifiable
|
||||
swingReflectionInvoke("setVisible", _close_all_button, false);
|
||||
}
|
||||
|
||||
if(!_preprocessing_transferences) {
|
||||
swingReflectionInvoke("setText", _status, genStatus());
|
||||
}
|
||||
}
|
||||
|
||||
private String genStatus() {
|
||||
|
||||
@ -267,7 +281,7 @@ abstract public class TransferenceManager implements Runnable, SecureNotifiable
|
||||
|
||||
int finish = _transference_finished_queue.size();
|
||||
|
||||
return (prov+rem+wait+run+finish > 0)?"Prov: "+prov+" / Rem: "+rem+" / Wait: "+wait+" / Run: "+run+" / Finish: "+finish:"";
|
||||
return (_pre_count+prov+rem+wait+run+finish > 0)?"Pre: "+_pre_count+" / Prov: "+prov+" / Rem: "+rem+" / Wait: "+wait+" / Run: "+run+" / Finish: "+finish:"";
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -275,8 +289,33 @@ abstract public class TransferenceManager implements Runnable, SecureNotifiable
|
||||
|
||||
while(true)
|
||||
{
|
||||
if(!isProvisioning_transferences() && !getTransference_provision_queue().isEmpty())
|
||||
if(!isPreprocessing_transferences() && !getTransference_preprocess_queue().isEmpty()) {
|
||||
|
||||
this.setPreprocessing_transferences(true);
|
||||
|
||||
THREAD_POOL.execute(new Runnable(){
|
||||
@Override
|
||||
public void run(){
|
||||
|
||||
while(!getTransference_preprocess_queue().isEmpty())
|
||||
{
|
||||
final Runnable run = getTransference_preprocess_queue().poll();
|
||||
|
||||
if(run != null) {
|
||||
|
||||
run.run();
|
||||
}
|
||||
}
|
||||
|
||||
setPreprocessing_transferences(false);
|
||||
|
||||
secureNotify();
|
||||
|
||||
}});
|
||||
}
|
||||
|
||||
if(!isProvisioning_transferences() && !getTransference_provision_queue().isEmpty()) {
|
||||
|
||||
setProvisioning_transferences(true);
|
||||
|
||||
THREAD_POOL.execute(new Runnable(){
|
||||
@ -327,8 +366,7 @@ abstract public class TransferenceManager implements Runnable, SecureNotifiable
|
||||
}});
|
||||
}
|
||||
|
||||
if(!isStarting_transferences() && !getTransference_start_queue().isEmpty() && getTransference_running_list().size() < _max_running_trans)
|
||||
{
|
||||
if(!isStarting_transferences() && !getTransference_start_queue().isEmpty() && getTransference_running_list().size() < _max_running_trans) {
|
||||
setStarting_transferences(true);
|
||||
|
||||
THREAD_POOL.execute(new Runnable(){
|
||||
|
Loading…
x
Reference in New Issue
Block a user