use of com.biglybt.core.CoreRunningListener in project BiglyBT by BiglySoftware.
the class SBC_TagDiscovery method startScan.
private void startScan() {
try {
mon_scansRemaining.enter();
if (scansRemaining > 0) {
return;
}
} finally {
mon_scansRemaining.exit();
}
CoreFactory.addCoreRunningListener(new CoreRunningListener() {
@Override
public void coreRunning(Core core) {
GlobalManager gm = core.getGlobalManager();
try {
try {
mon_scansRemaining.enter();
scansRemaining = 0;
} finally {
mon_scansRemaining.exit();
}
RelatedContentManager rcm = RelatedContentManager.getSingleton();
List<DownloadManager> dms = gm.getDownloadManagers();
for (final DownloadManager dm : dms) {
if (tv == null) {
return;
}
TOTorrent torrent = dm.getTorrent();
if (torrent == null) {
continue;
}
try {
final byte[] hash = torrent.getHash();
try {
mon_scansRemaining.enter();
scansRemaining++;
if (vitalityImage != null && scansRemaining == 1) {
vitalityImage.setVisible(true);
}
if (soTitle != null) {
soTitle.setText(MessageText.getString("tag.discovery.view.heading") + " : Scanning " + scansRemaining);
}
} finally {
mon_scansRemaining.exit();
}
try {
rcm.lookupAttributes(hash, dm.getDownloadState().getNetworks(), new RelatedAttributeLookupListener() {
@Override
public void tagFound(String tag, String network) {
if (DEBUG) {
System.out.println("Tag Search: Found Tag " + tag + " for " + dm.getDisplayName());
}
if (tv == null) {
return;
}
String key = Base32.encode(hash) + tag;
TagManager tm = TagManagerFactory.getTagManager();
TagType tt_manual = tm.getTagType(TagType.TT_DOWNLOAD_MANUAL);
List<Tag> existingDMTags = tt_manual.getTagsForTaggable(dm);
for (Tag existingTag : existingDMTags) {
if (existingTag.getTagName(true).equalsIgnoreCase(tag)) {
return;
}
}
synchronized (mapTagDiscoveries) {
if (!mapTagDiscoveries.containsKey(key)) {
TagDiscovery tagDiscovery = new TagDiscovery(tag, network, dm.getDisplayName(), hash);
mapTagDiscoveries.put(key, tagDiscovery);
ViewTitleInfoManager.refreshTitleInfo(SBC_TagDiscovery.this);
tv.addDataSource(tagDiscovery);
}
}
}
@Override
public void lookupStart() {
if (DEBUG) {
System.out.println("Tag Search: Start" + " for " + dm.getDisplayName());
}
}
@Override
public void lookupFailed(ContentException error) {
if (DEBUG) {
System.out.println("Tag Search: Failed " + error.getMessage() + " for " + dm.getDisplayName());
}
}
@Override
public void lookupComplete() {
decreaseScansRemaining();
if (DEBUG) {
System.out.println("Tag Search: Complete" + " for " + dm.getDisplayName());
}
}
});
} catch (Throwable e) {
// can get here if the scan never gets kicked off (dht unavailable for network etc)
decreaseScansRemaining();
}
} catch (TOTorrentException e) {
e.printStackTrace();
}
}
} catch (ContentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
use of com.biglybt.core.CoreRunningListener in project BiglyBT by BiglySoftware.
the class ConfigSectionTransfer method configSectionCreate.
@Override
public Composite configSectionCreate(final Composite parent) {
GridData gridData;
GridLayout layout;
Label label;
Composite cSection = new Composite(parent, SWT.NULL);
gridData = new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL);
Utils.setLayoutData(cSection, gridData);
layout = new GridLayout();
layout.numColumns = 2;
layout.marginHeight = 0;
cSection.setLayout(layout);
int userMode = COConfigurationManager.getIntParameter("User Mode");
// store the initial d/l speed so we can do something sensible later
final int[] manual_max_download_speed = { COConfigurationManager.getIntParameter("Max Download Speed KBs") };
// max upload speed
gridData = new GridData();
label = new Label(cSection, SWT.NULL);
Utils.setLayoutData(label, gridData);
Messages.setLanguageText(label, "ConfigView.label.maxuploadspeed");
gridData = new GridData();
final IntParameter paramMaxUploadSpeed = new IntParameter(cSection, "Max Upload Speed KBs", 0, Integer.MAX_VALUE);
paramMaxUploadSpeed.setLayoutData(gridData);
// max upload speed when seeding
final Composite cMaxUploadSpeedOptionsArea = new Composite(cSection, SWT.NULL);
layout = new GridLayout();
layout.numColumns = 3;
layout.marginWidth = 0;
layout.marginHeight = 0;
cMaxUploadSpeedOptionsArea.setLayout(layout);
gridData = new GridData();
gridData.horizontalIndent = 15;
gridData.horizontalSpan = 2;
Utils.setLayoutData(cMaxUploadSpeedOptionsArea, gridData);
ImageLoader imageLoader = ImageLoader.getInstance();
Image img = imageLoader.getImage("subitem");
label = new Label(cMaxUploadSpeedOptionsArea, SWT.NULL);
img.setBackground(label.getBackground());
gridData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
Utils.setLayoutData(label, gridData);
label.setImage(img);
gridData = new GridData();
final BooleanParameter enable_seeding_rate = new BooleanParameter(cMaxUploadSpeedOptionsArea, "enable.seedingonly.upload.rate", "ConfigView.label.maxuploadspeedseeding");
enable_seeding_rate.setLayoutData(gridData);
gridData = new GridData();
final IntParameter paramMaxUploadSpeedSeeding = new IntParameter(cMaxUploadSpeedOptionsArea, "Max Upload Speed Seeding KBs", 0, Integer.MAX_VALUE);
paramMaxUploadSpeedSeeding.setLayoutData(gridData);
enable_seeding_rate.setAdditionalActionPerformer(new ChangeSelectionActionPerformer(paramMaxUploadSpeedSeeding.getControl()));
if (userMode < 2) {
// wiki link
Composite cWiki = new Composite(cSection, SWT.COLOR_GRAY);
gridData = new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL);
gridData.horizontalSpan = 2;
Utils.setLayoutData(cWiki, gridData);
layout = new GridLayout();
layout.numColumns = 4;
layout.marginHeight = 0;
cWiki.setLayout(layout);
gridData = new GridData();
gridData.horizontalIndent = 6;
gridData.horizontalSpan = 2;
label = new Label(cWiki, SWT.NULL);
Utils.setLayoutData(label, gridData);
label.setText(MessageText.getString("Utils.link.visit") + ":");
gridData = new GridData();
gridData.horizontalIndent = 10;
gridData.horizontalSpan = 2;
new LinkLabel(cWiki, gridData, "ConfigView.section.transfer.speeds.wiki", Constants.URL_WIKI + "w/Good_settings");
}
if (userMode > 1) {
gridData = new GridData();
label = new Label(cSection, SWT.NULL);
Utils.setLayoutData(label, gridData);
Messages.setLanguageText(label, "ConfigView.label.maxuploadswhenbusymin");
gridData = new GridData();
new IntParameter(cSection, "max.uploads.when.busy.inc.min.secs", 0, Integer.MAX_VALUE).setLayoutData(gridData);
}
// max download speed
gridData = new GridData();
label = new Label(cSection, SWT.NULL);
Utils.setLayoutData(label, gridData);
Messages.setLanguageText(label, "ConfigView.label.maxdownloadspeed");
gridData = new GridData();
final IntParameter paramMaxDownSpeed = new IntParameter(cSection, "Max Download Speed KBs", 0, Integer.MAX_VALUE);
paramMaxDownSpeed.setLayoutData(gridData);
// max upload/download limit dependencies
Listener l = new Listener() {
@Override
public void handleEvent(Event event) {
boolean disableAuto = false;
boolean disableAutoSeeding = false;
if (enable_seeding_rate.isSelected()) {
disableAutoSeeding = event.widget == paramMaxUploadSpeedSeeding.getControl();
disableAuto = event.widget == paramMaxDownSpeed.getControl() || event.widget == paramMaxUploadSpeed.getControl();
} else {
disableAuto = true;
disableAutoSeeding = true;
}
if (disableAuto)
COConfigurationManager.setParameter(TransferSpeedValidator.AUTO_UPLOAD_ENABLED_CONFIGKEY, false);
if (disableAutoSeeding)
COConfigurationManager.setParameter(TransferSpeedValidator.AUTO_UPLOAD_SEEDING_ENABLED_CONFIGKEY, false);
}
};
paramMaxDownSpeed.getControl().addListener(SWT.Selection, l);
paramMaxUploadSpeed.getControl().addListener(SWT.Selection, l);
paramMaxUploadSpeedSeeding.getControl().addListener(SWT.Selection, l);
paramMaxUploadSpeed.addChangeListener(new ParameterChangeAdapter() {
ParameterChangeAdapter me = this;
@Override
public void parameterChanged(Parameter p, boolean internal) {
CoreWaiterSWT.waitForCoreRunning(new CoreRunningListener() {
@Override
public void coreRunning(Core core) {
if (paramMaxUploadSpeed.isDisposed()) {
paramMaxUploadSpeed.removeChangeListener(me);
return;
}
if (TransferSpeedValidator.isAutoSpeedActive(core.getGlobalManager())) {
return;
}
int up_val = paramMaxUploadSpeed.getValue();
int down_val = paramMaxDownSpeed.getValue();
if (up_val != 0 && up_val < COConfigurationManager.CONFIG_DEFAULT_MIN_MAX_UPLOAD_SPEED) {
if ((down_val == 0) || down_val > (up_val * 2)) {
paramMaxDownSpeed.setValue(up_val * 2);
}
} else {
if (down_val != manual_max_download_speed[0]) {
paramMaxDownSpeed.setValue(manual_max_download_speed[0]);
}
}
}
});
}
});
paramMaxDownSpeed.addChangeListener(new ParameterChangeAdapter() {
ParameterChangeAdapter me = this;
@Override
public void parameterChanged(Parameter p, boolean internal) {
CoreWaiterSWT.waitForCoreRunning(new CoreRunningListener() {
@Override
public void coreRunning(Core core) {
if (paramMaxDownSpeed.isDisposed()) {
paramMaxDownSpeed.removeChangeListener(me);
return;
}
if (TransferSpeedValidator.isAutoSpeedActive(core.getGlobalManager())) {
return;
}
int up_val = paramMaxUploadSpeed.getValue();
int down_val = paramMaxDownSpeed.getValue();
manual_max_download_speed[0] = down_val;
if (up_val < COConfigurationManager.CONFIG_DEFAULT_MIN_MAX_UPLOAD_SPEED) {
if (up_val != 0 && up_val < (down_val * 2)) {
paramMaxUploadSpeed.setValue((down_val + 1) / 2);
} else if (down_val == 0) {
paramMaxUploadSpeed.setValue(0);
}
}
}
});
}
});
if (userMode > 0) {
// bias upload to incomplete
BooleanParameter bias_upload = new BooleanParameter(cSection, "Bias Upload Enable", "ConfigView.label.xfer.bias_up");
gridData = new GridData();
gridData.horizontalSpan = 2;
bias_upload.setLayoutData(gridData);
final Composite bias_slack_area = new Composite(cSection, SWT.NULL);
layout = new GridLayout();
layout.numColumns = 3;
layout.marginWidth = 0;
layout.marginHeight = 0;
bias_slack_area.setLayout(layout);
gridData = new GridData();
gridData.horizontalIndent = 15;
gridData.horizontalSpan = 2;
Utils.setLayoutData(bias_slack_area, gridData);
label = new Label(bias_slack_area, SWT.NULL);
gridData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
Utils.setLayoutData(label, gridData);
label.setImage(img);
label = new Label(bias_slack_area, SWT.NULL);
Messages.setLanguageText(label, "ConfigView.label.xfer.bias_slack");
IntParameter bias_slack = new IntParameter(bias_slack_area, "Bias Upload Slack KBs", 1, Integer.MAX_VALUE);
final Composite bias_unlimited_area = new Composite(cSection, SWT.NULL);
layout = new GridLayout();
layout.numColumns = 2;
layout.marginWidth = 0;
layout.marginHeight = 0;
bias_unlimited_area.setLayout(layout);
gridData = new GridData();
gridData.horizontalIndent = 15;
gridData.horizontalSpan = 2;
Utils.setLayoutData(bias_unlimited_area, gridData);
label = new Label(bias_unlimited_area, SWT.NULL);
gridData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
Utils.setLayoutData(label, gridData);
label.setImage(img);
BooleanParameter bias_no_limit = new BooleanParameter(bias_unlimited_area, "Bias Upload Handle No Limit", "ConfigView.label.xfer.bias_no_limit");
bias_upload.setAdditionalActionPerformer(new ChangeSelectionActionPerformer(new Parameter[] { bias_slack, bias_no_limit }));
}
if (userMode > 0) {
// AUTO GROUP
Group auto_group = new Group(cSection, SWT.NULL);
Messages.setLanguageText(auto_group, "group.auto");
GridLayout auto_layout = new GridLayout();
auto_layout.numColumns = 2;
auto_group.setLayout(auto_layout);
gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.horizontalSpan = 2;
Utils.setLayoutData(auto_group, gridData);
BooleanParameter auto_adjust = new BooleanParameter(auto_group, "Auto Adjust Transfer Defaults", "ConfigView.label.autoadjust");
gridData = new GridData();
gridData.horizontalSpan = 2;
auto_adjust.setLayoutData(gridData);
// max uploads
gridData = new GridData();
label = new Label(auto_group, SWT.NULL);
Utils.setLayoutData(label, gridData);
Messages.setLanguageText(label, "ConfigView.label.maxuploads");
gridData = new GridData();
IntParameter paramMaxUploads = new IntParameter(auto_group, "Max Uploads", 2, Integer.MAX_VALUE);
paramMaxUploads.setLayoutData(gridData);
// max uploads when seeding
final Composite cMaxUploadsOptionsArea = new Composite(auto_group, SWT.NULL);
layout = new GridLayout();
layout.numColumns = 3;
layout.marginWidth = 0;
layout.marginHeight = 0;
cMaxUploadsOptionsArea.setLayout(layout);
gridData = new GridData();
gridData.horizontalIndent = 15;
gridData.horizontalSpan = 2;
Utils.setLayoutData(cMaxUploadsOptionsArea, gridData);
label = new Label(cMaxUploadsOptionsArea, SWT.NULL);
img.setBackground(label.getBackground());
gridData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
Utils.setLayoutData(label, gridData);
label.setImage(img);
gridData = new GridData();
BooleanParameter enable_seeding_uploads = new BooleanParameter(cMaxUploadsOptionsArea, "enable.seedingonly.maxuploads", "ConfigView.label.maxuploadsseeding");
enable_seeding_uploads.setLayoutData(gridData);
gridData = new GridData();
final IntParameter paramMaxUploadsSeeding = new IntParameter(cMaxUploadsOptionsArea, "Max Uploads Seeding", 2, Integer.MAX_VALUE);
paramMaxUploadsSeeding.setLayoutData(gridData);
// //
gridData = new GridData();
label = new Label(auto_group, SWT.NULL);
Utils.setLayoutData(label, gridData);
Messages.setLanguageText(label, "ConfigView.label.max_peers_per_torrent");
gridData = new GridData();
IntParameter paramMaxClients = new IntParameter(auto_group, "Max.Peer.Connections.Per.Torrent");
paramMaxClients.setLayoutData(gridData);
// ///
// max peers when seeding
final Composite cMaxPeersOptionsArea = new Composite(auto_group, SWT.NULL);
layout = new GridLayout();
layout.numColumns = 3;
layout.marginWidth = 0;
layout.marginHeight = 0;
cMaxPeersOptionsArea.setLayout(layout);
gridData = new GridData();
gridData.horizontalIndent = 15;
gridData.horizontalSpan = 2;
Utils.setLayoutData(cMaxPeersOptionsArea, gridData);
label = new Label(cMaxPeersOptionsArea, SWT.NULL);
img.setBackground(label.getBackground());
gridData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
Utils.setLayoutData(label, gridData);
label.setImage(img);
gridData = new GridData();
BooleanParameter enable_max_peers_seeding = new BooleanParameter(cMaxPeersOptionsArea, "Max.Peer.Connections.Per.Torrent.When.Seeding.Enable", "ConfigView.label.maxuploadsseeding");
enable_max_peers_seeding.setLayoutData(gridData);
gridData = new GridData();
final IntParameter paramMaxPeersSeeding = new IntParameter(cMaxPeersOptionsArea, "Max.Peer.Connections.Per.Torrent.When.Seeding", 0, Integer.MAX_VALUE);
paramMaxPeersSeeding.setLayoutData(gridData);
// ///
gridData = new GridData();
label = new Label(auto_group, SWT.NULL);
Utils.setLayoutData(label, gridData);
Messages.setLanguageText(label, "ConfigView.label.max_peers_total");
gridData = new GridData();
IntParameter paramMaxClientsTotal = new IntParameter(auto_group, "Max.Peer.Connections.Total");
paramMaxClientsTotal.setLayoutData(gridData);
gridData = new GridData();
label = new Label(auto_group, SWT.NULL);
Utils.setLayoutData(label, gridData);
Messages.setLanguageText(label, "ConfigView.label.maxseedspertorrent");
gridData = new GridData();
IntParameter max_seeds_per_torrent = new IntParameter(auto_group, "Max Seeds Per Torrent");
max_seeds_per_torrent.setLayoutData(gridData);
final Parameter[] parameters = { paramMaxUploads, enable_seeding_uploads, paramMaxUploadsSeeding, paramMaxClients, enable_max_peers_seeding, paramMaxPeersSeeding, paramMaxClientsTotal, max_seeds_per_torrent };
IAdditionalActionPerformer f_enabler = new GenericActionPerformer(new Control[0]) {
@Override
public void performAction() {
boolean auto = COConfigurationManager.getBooleanParameter("Auto Adjust Transfer Defaults");
for (Parameter p : parameters) {
Control[] c = p.getControls();
for (Control x : c) {
x.setEnabled(!auto);
}
}
if (!auto) {
paramMaxUploadsSeeding.getControl().setEnabled(COConfigurationManager.getBooleanParameter("enable.seedingonly.maxuploads"));
paramMaxPeersSeeding.getControl().setEnabled(COConfigurationManager.getBooleanParameter("Max.Peer.Connections.Per.Torrent.When.Seeding.Enable"));
}
}
};
f_enabler.performAction();
enable_seeding_uploads.setAdditionalActionPerformer(f_enabler);
enable_max_peers_seeding.setAdditionalActionPerformer(f_enabler);
auto_adjust.setAdditionalActionPerformer(f_enabler);
// NON PUBLIC PEERS GROUP
Group npp_group = new Group(cSection, SWT.NULL);
Messages.setLanguageText(npp_group, "label.non.public.peers");
GridLayout npp_layout = new GridLayout();
npp_layout.numColumns = 2;
npp_group.setLayout(npp_layout);
gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.horizontalSpan = 2;
Utils.setLayoutData(npp_group, gridData);
label = new Label(npp_group, SWT.NULL);
Messages.setLanguageText(label, "ConfigView.label.npp.slots");
IntParameter npp_upload_slots = new IntParameter(npp_group, "Non-Public Peer Extra Slots Per Torrent", 0, Integer.MAX_VALUE);
label = new Label(npp_group, SWT.NULL);
Messages.setLanguageText(label, "ConfigView.label.npp.connections");
IntParameter npp_connections = new IntParameter(npp_group, "Non-Public Peer Extra Connections Per Torrent", 0, Integer.MAX_VALUE);
// END NON PUBLIC PEERS GROUP
gridData = new GridData();
gridData.horizontalSpan = 2;
BooleanParameter useReqLimiting = new BooleanParameter(cSection, "Use Request Limiting", "ConfigView.label.userequestlimiting");
useReqLimiting.setLayoutData(gridData);
gridData = new GridData();
gridData.horizontalSpan = 2;
BooleanParameter useReqLimitingPrios = new BooleanParameter(cSection, "Use Request Limiting Priorities", "ConfigView.label.userequestlimitingpriorities");
useReqLimitingPrios.setLayoutData(gridData);
useReqLimiting.setAdditionalActionPerformer(new ChangeSelectionActionPerformer(useReqLimitingPrios.getControl()));
// up limits include protocol
gridData = new GridData();
gridData.horizontalSpan = 2;
BooleanParameter upIncludesProt = new BooleanParameter(cSection, "Up Rate Limits Include Protocol", "ConfigView.label.up.includes.prot");
upIncludesProt.setLayoutData(gridData);
// down limits include protocol
gridData = new GridData();
gridData.horizontalSpan = 2;
BooleanParameter downIncludesProt = new BooleanParameter(cSection, "Down Rate Limits Include Protocol", "ConfigView.label.down.includes.prot");
downIncludesProt.setLayoutData(gridData);
// same IP
gridData = new GridData();
gridData.horizontalSpan = 2;
BooleanParameter allowSameIP = new BooleanParameter(cSection, "Allow Same IP Peers", "ConfigView.label.allowsameip");
allowSameIP.setLayoutData(gridData);
// lazy bit field
gridData = new GridData();
gridData.horizontalSpan = 2;
BooleanParameter lazybf = new BooleanParameter(cSection, "Use Lazy Bitfield", "ConfigView.label.lazybitfield");
lazybf.setLayoutData(gridData);
if (userMode > 1) {
gridData = new GridData();
gridData.horizontalSpan = 2;
BooleanParameter hap = new BooleanParameter(cSection, "peercontrol.hide.piece", "ConfigView.label.hap");
hap.setLayoutData(gridData);
gridData = new GridData();
gridData.horizontalSpan = 2;
BooleanParameter hapds = new BooleanParameter(cSection, "peercontrol.hide.piece.ds", "ConfigView.label.hapds");
hapds.setLayoutData(gridData);
hap.setAdditionalActionPerformer(new ChangeSelectionActionPerformer(hapds.getControl()));
}
// prioritise first/last pieces
gridData = new GridData();
gridData.horizontalSpan = 2;
BooleanParameter firstPiece = new BooleanParameter(cSection, "Prioritize First Piece", "ConfigView.label.prioritizefirstpiece");
firstPiece.setLayoutData(gridData);
// Further prioritize High priority files according to % complete and size of file
gridData = new GridData();
gridData.horizontalSpan = 2;
BooleanParameter mostCompletedFiles = new BooleanParameter(cSection, "Prioritize Most Completed Files", "ConfigView.label.prioritizemostcompletedfiles");
mostCompletedFiles.setLayoutData(gridData);
// ignore ports
Composite cMiniArea = new Composite(cSection, SWT.NULL);
layout = new GridLayout();
layout.numColumns = 2;
layout.marginHeight = 0;
layout.marginWidth = 0;
cMiniArea.setLayout(layout);
gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.horizontalSpan = 2;
Utils.setLayoutData(cMiniArea, gridData);
gridData = new GridData();
label = new Label(cMiniArea, SWT.NULL);
Utils.setLayoutData(label, gridData);
Messages.setLanguageText(label, "ConfigView.label.transfer.ignorepeerports");
gridData = new GridData();
gridData.widthHint = 125;
StringParameter ignore_ports = new StringParameter(cMiniArea, "Ignore.peer.ports", "0");
ignore_ports.setLayoutData(gridData);
}
return cSection;
}
use of com.biglybt.core.CoreRunningListener in project BiglyBT by BiglySoftware.
the class TransferStatsView method initialize.
private void initialize(Composite composite) {
mainPanel = new Composite(composite, SWT.NULL);
GridLayout mainLayout = new GridLayout();
mainPanel.setLayout(mainLayout);
CoreFactory.addCoreRunningListener(new CoreRunningListener() {
@Override
public void coreRunning(Core core) {
Utils.execSWTThread(new AERunnable() {
@Override
public void runSupport() {
if (mainPanel == null || mainPanel.isDisposed()) {
return;
}
createGeneralPanel();
createConnectionPanel();
createCapacityPanel();
createAutoSpeedPanel();
initialised = true;
}
});
}
});
}
use of com.biglybt.core.CoreRunningListener in project BiglyBT by BiglySoftware.
the class VivaldiView method initialize.
private void initialize(Composite composite) {
CoreFactory.addCoreRunningListener(new CoreRunningListener() {
@Override
public void coreRunning(Core core) {
VivaldiView.this.core = core;
init(core);
}
});
panel = new Composite(composite, SWT.NULL);
panel.setLayout(new FillLayout());
drawPanel = new VivaldiPanel(panel);
drawPanel.setAutoAlpha(autoAlpha);
}
use of com.biglybt.core.CoreRunningListener in project BiglyBT by BiglySoftware.
the class ManagerUtils method asyncPauseForPeriod.
public static void asyncPauseForPeriod(final List<DownloadManager> dms, final int seconds) {
CoreWaiterSWT.waitForCore(TriggerInThread.NEW_THREAD, new CoreRunningListener() {
@Override
public void coreRunning(Core core) {
final List<DownloadManager> paused = new ArrayList<>();
final DownloadManagerListener listener = new DownloadManagerAdapter() {
@Override
public void stateChanged(DownloadManager manager, int state) {
synchronized (paused) {
if (!paused.remove(manager)) {
return;
}
}
manager.removeListener(this);
}
};
long target_time = SystemTime.getOffsetTime(seconds * 1000);
String time_str = new SimpleDateFormat("HH:mm:ss").format(new Date(target_time));
String reason = MessageText.getString("label.resuming.at", new String[] { time_str });
for (DownloadManager dm : dms) {
if (!isPauseable(dm)) {
continue;
}
if (dm.pause(target_time)) {
dm.setStopReason(reason);
synchronized (paused) {
paused.add(dm);
}
dm.addListener(listener, false);
}
}
if (paused.size() > 0) {
SimpleTimer.addEvent("ManagerUtils.resumer", target_time, new TimerEventPerformer() {
@Override
public void perform(TimerEvent event) {
List<DownloadManager> to_resume = new ArrayList<>();
synchronized (paused) {
to_resume.addAll(paused);
paused.clear();
}
for (DownloadManager dm : to_resume) {
dm.removeListener(listener);
try {
dm.resume();
} catch (Throwable e) {
Debug.out(e);
}
}
}
});
}
}
});
}
Aggregations