⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 resourcedownloadermetarefreshimpl.java

📁 java 文件下载器。可自定义
💻 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:   ResourceDownloaderMetaRefreshImpl.java

package org.gudy.azureus2.pluginsimpl.local.utils.resourcedownloader;

import java.io.InputStream;
import org.gudy.azureus2.core3.html.*;
import org.gudy.azureus2.core3.util.AEMonitor;
import org.gudy.azureus2.core3.util.AESemaphore;
import org.gudy.azureus2.plugins.utils.resourcedownloader.*;

// Referenced classes of package org.gudy.azureus2.pluginsimpl.local.utils.resourcedownloader:
//			ResourceDownloaderBaseImpl, ResourceDownloaderURLImpl

public class ResourceDownloaderMetaRefreshImpl extends ResourceDownloaderBaseImpl
	implements ResourceDownloaderListener
{

	public static final int MAX_FOLLOWS = 1;
	protected ResourceDownloaderBaseImpl delegate;
	protected ResourceDownloaderBaseImpl current_delegate;
	protected long size;
	protected boolean cancelled;
	protected ResourceDownloader current_downloader;
	protected Object result;
	protected int done_count;
	protected AESemaphore done_sem;

	public ResourceDownloaderMetaRefreshImpl(ResourceDownloaderBaseImpl _parent, ResourceDownloader _delegate)
	{
		super(_parent);
		size = -2L;
		done_sem = new AESemaphore("RDMetaRefresh");
		delegate = (ResourceDownloaderBaseImpl)_delegate;
		delegate.setParent(this);
		current_delegate = delegate;
	}

	public String getName()
	{
		return (new StringBuilder()).append(delegate.getName()).append(": meta-refresh").toString();
	}

	public long getSize()
		throws ResourceDownloaderException
	{
		if (size != -2L)
			break MISSING_BLOCK_LABEL_77;
		size = getSizeSupport();
		if (size == -2L)
			size = -1L;
		setSize(size);
		break MISSING_BLOCK_LABEL_77;
		Exception exception;
		exception;
		if (size == -2L)
			size = -1L;
		setSize(size);
		throw exception;
		return size;
	}

	protected void setSize(long l)
	{
		size = l;
		if (size >= 0L)
			delegate.setSize(size);
	}

	public void setProperty(String name, Object value)
		throws ResourceDownloaderException
	{
		setPropertySupport(name, value);
		delegate.setProperty(name, value);
	}

	protected long getSizeSupport()
		throws ResourceDownloaderException
	{
		java.net.URL redirect;
		long res;
		ResourceDownloader x = delegate.getClone(this);
		addReportListener(x);
		HTMLPage page = HTMLPageFactory.loadPage(x.download());
		redirect = page.getMetaRefreshURL();
		if (redirect != null)
			break MISSING_BLOCK_LABEL_67;
		ResourceDownloaderBaseImpl c = delegate.getClone(this);
		addReportListener(c);
		res = c.getSize();
		setProperties(c);
		return res;
		ResourceDownloaderURLImpl c = new ResourceDownloaderURLImpl(getParent(), redirect);
		addReportListener(c);
		res = c.getSize();
		setProperties(c);
		return res;
		HTMLException e;
		e;
		throw new ResourceDownloaderException("getSize failed", e);
	}

	public ResourceDownloaderBaseImpl getClone(ResourceDownloaderBaseImpl parent)
	{
		ResourceDownloaderMetaRefreshImpl c = new ResourceDownloaderMetaRefreshImpl(parent, delegate.getClone(this));
		c.setSize(size);
		c.setProperties(this);
		return c;
	}

	public InputStream download()
		throws ResourceDownloaderException
	{
		asyncDownload();
		done_sem.reserve();
		if (result instanceof InputStream)
			return (InputStream)result;
		else
			throw (ResourceDownloaderException)result;
	}

	public void asyncDownload()
	{
		this_mon.enter();
		if (cancelled)
		{
			done_sem.release();
			informFailed((ResourceDownloaderException)result);
		} else
		{
			done_count++;
			current_downloader = current_delegate.getClone(this);
			informActivity((new StringBuilder()).append(getLogIndent()).append("Downloading: ").append(getName()).toString());
			current_downloader.addListener(this);
			current_downloader.asyncDownload();
		}
		this_mon.exit();
		break MISSING_BLOCK_LABEL_129;
		Exception exception;
		exception;
		this_mon.exit();
		throw exception;
	}

	public void cancel()
	{
		setCancelled();
		this_mon.enter();
		result = new ResourceDownloaderCancelledException();
		cancelled = true;
		informFailed((ResourceDownloaderException)result);
		done_sem.release();
		if (current_downloader != null)
			current_downloader.cancel();
		this_mon.exit();
		break MISSING_BLOCK_LABEL_81;
		Exception exception;
		exception;
		this_mon.exit();
		throw exception;
	}

	public boolean completed(ResourceDownloader downloader, InputStream data)
	{
		boolean complete = false;
		try
		{
			if (done_count == 1)
			{
				boolean marked = false;
				if (data.markSupported())
				{
					data.mark(data.available());
					marked = true;
				}
				HTMLPage page = HTMLPageFactory.loadPage(data, !marked);
				java.net.URL redirect = page.getMetaRefreshURL();
				if (redirect == null)
				{
					if (!marked)
					{
						failed(downloader, new ResourceDownloaderException("meta refresh tag not found and input stream not recoverable"));
					} else
					{
						data.reset();
						complete = true;
					}
				} else
				{
					current_delegate = new ResourceDownloaderURLImpl(this, redirect);
					asyncDownload();
				}
				if (marked && !complete)
					data.close();
			} else
			{
				complete = true;
			}
			if (complete && informComplete(data))
			{
				result = data;
				done_sem.release();
			}
		}
		catch (Throwable e)
		{
			failed(downloader, new ResourceDownloaderException("meta-refresh processing fails", e));
		}
		return true;
	}

	public void failed(ResourceDownloader downloader, ResourceDownloaderException e)
	{
		result = e;
		done_sem.release();
		informFailed(e);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -