📄 task.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 + -