📄 categoryimpl.java
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space
// Source File Name: CategoryImpl.java
package org.gudy.azureus2.core3.category.impl;
import com.aelitis.azureus.core.networkmanager.LimitedRateGroup;
import java.util.ArrayList;
import java.util.List;
import org.gudy.azureus2.core3.category.Category;
import org.gudy.azureus2.core3.category.CategoryListener;
import org.gudy.azureus2.core3.download.DownloadManager;
import org.gudy.azureus2.core3.download.DownloadManagerState;
import org.gudy.azureus2.core3.util.ListenerManager;
import org.gudy.azureus2.core3.util.ListenerManagerDispatcher;
// Referenced classes of package org.gudy.azureus2.core3.category.impl:
// CategoryManagerImpl
public class CategoryImpl
implements Category, Comparable
{
private String sName;
private int type;
private List managers;
private int upload_speed;
private int download_speed;
private LimitedRateGroup upload_limiter = new LimitedRateGroup() {
final CategoryImpl this$0;
public String getName()
{
return (new StringBuilder()).append("cat_up: ").append(sName).toString();
}
public int getRateLimitBytesPerSecond()
{
return upload_speed;
}
{
this$0 = CategoryImpl.this;
super();
}
};
private LimitedRateGroup download_limiter = new LimitedRateGroup() {
final CategoryImpl this$0;
public String getName()
{
return (new StringBuilder()).append("cat_down: ").append(sName).toString();
}
public int getRateLimitBytesPerSecond()
{
return download_speed;
}
{
this$0 = CategoryImpl.this;
super();
}
};
private static final int LDT_CATEGORY_DMADDED = 1;
private static final int LDT_CATEGORY_DMREMOVED = 2;
private ListenerManager category_listeners;
public CategoryImpl(String sName, int maxup, int maxdown)
{
managers = new ArrayList();
category_listeners = ListenerManager.createManager("CatListenDispatcher", new ListenerManagerDispatcher() {
final CategoryImpl this$0;
public void dispatch(Object _listener, int type, Object value)
{
CategoryListener target = (CategoryListener)_listener;
if (type == 1)
target.downloadManagerAdded(CategoryImpl.this, (DownloadManager)value);
else
if (type == 2)
target.downloadManagerRemoved(CategoryImpl.this, (DownloadManager)value);
}
{
this$0 = CategoryImpl.this;
super();
}
});
this.sName = sName;
type = 0;
upload_speed = maxup;
download_speed = maxdown;
}
public CategoryImpl(String sName, int type)
{
managers = new ArrayList();
category_listeners = ListenerManager.createManager("CatListenDispatcher", new 3());
this.sName = sName;
this.type = type;
}
public void addCategoryListener(CategoryListener l)
{
category_listeners.addListener(l);
}
public void removeCategoryListener(CategoryListener l)
{
category_listeners.removeListener(l);
}
public String getName()
{
return sName;
}
public int getType()
{
return type;
}
public List getDownloadManagers(List all_dms)
{
if (type == 0)
return managers;
if (type == 1)
return all_dms;
List result = new ArrayList();
for (int i = 0; i < all_dms.size(); i++)
{
DownloadManager dm = (DownloadManager)all_dms.get(i);
Category cat = dm.getDownloadState().getCategory();
if (cat == null || cat.getType() == 2)
result.add(dm);
}
return result;
}
public void addManager(DownloadManagerState manager_state)
{
if (manager_state.getCategory() != this)
{
manager_state.setCategory(this);
return;
}
DownloadManager manager = manager_state.getDownloadManager();
if (manager == null)
return;
if (!managers.contains(manager))
{
managers.add(manager);
manager.addRateLimiter(upload_limiter, true);
manager.addRateLimiter(download_limiter, false);
category_listeners.dispatch(1, manager);
}
}
public void removeManager(DownloadManagerState manager_state)
{
if (manager_state.getCategory() == this)
{
manager_state.setCategory(null);
return;
}
DownloadManager manager = manager_state.getDownloadManager();
if (manager == null)
return;
if (managers.contains(manager) || type != 0)
{
managers.remove(manager);
manager.removeRateLimiter(upload_limiter, true);
manager.removeRateLimiter(download_limiter, false);
category_listeners.dispatch(2, manager);
}
}
public void setDownloadSpeed(int speed)
{
if (download_speed != speed)
{
download_speed = speed;
CategoryManagerImpl.getInstance().saveCategories();
}
}
public int getDownloadSpeed()
{
return download_speed;
}
public void setUploadSpeed(int speed)
{
if (upload_speed != speed)
{
upload_speed = speed;
CategoryManagerImpl.getInstance().saveCategories();
}
}
public int getUploadSpeed()
{
return upload_speed;
}
public int compareTo(Object b)
{
boolean aTypeIsUser = type == 0;
boolean bTypeIsUser = ((Category)b).getType() == 0;
if (aTypeIsUser == bTypeIsUser)
return sName.compareToIgnoreCase(((Category)b).getName());
return !aTypeIsUser ? -1 : 1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -