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

📄 task.java

📁 一个基于NetBeans平台开发的
💻 JAVA
字号:
/**这个类是管理任务行为的,
 *它是通过TaskInfo对象实现对任务的管理,
 *所以,在使用它之前,必须先获得任务信息,
 *使用这个任务信息构造这个类的对象。
 *
 */

package com.sinpool.rivercrescent.Task; 

import net.jxta.pipe.*;
import net.jxta.peergroup.*;
import net.jxta.protocol.*;
import net.jxta.discovery.*;

import java.io.IOException;

import com.sinpool.rivercrescent.*;
import com.sinpool.rivercrescent.Listener.*;
import com.sinpool.rivercrescent.interfaces.MyPipeMsgListener;

public class Task{
	private PeerGroup currentPeerGroup = null;
	private String currentPeerGroupName = null;
	private TaskInfo taskInfo = null;
	private PipeService currentPipes = null;
	private PipeAdvertisement currentPipeadv = null;
	private InputPipe currentInputPipe = null;
	private MyPipeMsgListener taskListener = null;
	
	//建立带监听器的输入管道
	private void setInputPipe(){
		try{
                        currentInputPipe = currentPipes.createInputPipe(currentPipeadv,taskListener);
                        taskListener.startJoinDownloadListener();

                        System.out.println("监听器顺利加载。");
		}catch (IOException ioe) {System.out.println("Task类创建输入管道时出错!");return;}
	}
	
	/**启动任务时,使用此方法。
	  *@param ti 需要有参数TaskInfo对象,
	  *			 通过它来实现启动哪个任务,
	  *			 这样,不仅实现了第一次启动的问题,
	  *			 也实现了在不关闭软件的情况下,先停止再启动的问题,
	  *			 也实现了,第二次打开软件后,启动任务的问题。
	  *			 他们都通过ti参数确定启动谁。
	  *			 当然,这个参数在JFrame里,在启动任务事件里设置。
	  *@param first 指出这个任务是否为第一次运行,主要是针对joined的任务。
	  *				如果是刚刚加入了一个组,设置为"true",
	  *				如果在JFrame初始化时,已经列出了这个任务,
	  *				设置为"false"。
	  */
	
	public void startTask(TaskInfo ti){
		
		this.taskInfo = ti;
		this.currentPipes = ti.getTaskPipes();
		this.currentPipeadv = ti.getTaskPipeadv();
		
		//设置监听器
		if ( taskInfo.getTaskType().equals("publish") ){
			taskInfo.setTaskDownloadSpeed("0");
			taskInfo.setTaskFinishedLength(taskInfo.getTaskFileLength());
			taskInfo.setTaskPercentage("100%");
			taskInfo.taskUpdata();

			this.taskListener = new PublishTaskListener(taskInfo);
		}
		else {
                    if (taskInfo.getTaskUsedTime() == null ){
                        taskInfo.setTaskFileName("?");
			taskInfo.setTaskDownloadSpeed("0");
                        taskInfo.setTaskFinishedLength("等待元文件");
			taskInfo.setTaskPercentage("0%");
                    }
                        taskInfo.taskUpdata();
			this.taskListener = new JoinTaskListener(taskInfo);
		}
		
		//建立输入管道。
		setInputPipe();
	}
	
	//停止此任务
	public void stopTask(){
		currentInputPipe.close();
		this.taskListener.stopListener();
	}
}

⌨️ 快捷键说明

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