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

📄 parsefilequeue.java

📁 解析特定16进制文件
💻 JAVA
字号:
package com.datangmobile.oss.omc.pc;

import java.util.Date;
import java.util.Iterator;
import java.util.LinkedList;

//import com.datangmobile.oss.omc.server.pm.PmContext;
import com.datangmobile.oss.omc.pc.util.FileInfo;
//import com.datangmobile.oss.omc.pc.util.MessageSender;

public class ParseFileQueue {

	/**
	 * 缓存所有文件的队列,当MDB收到消息后,就在此队列中删除<br>
	 * 有一个线程每一分钟轮询此队列,如果发现有超过3分钟的文件没有处理,则再次发送消息给解析的MDB<br>
	 * 这样可保证丢消息后的处理
	 */
	private LinkedList<FileInfo> queue = new LinkedList<FileInfo>();

	private static ParseFileQueue instance = new ParseFileQueue();

	/**
	 * 单例类
	 * 
	 * @return
	 */
	public static ParseFileQueue getInstance() {
		return instance;
	}

	/**
	 * 给解析的文件队列增加要解析的文件,并发出消息
	 * 
	 * @param fileInfo
	 */
	public void putParseFile(FileInfo fileInfo) {
		// 先设入时间
		fileInfo.setFirstParseTime(new Date());
		fileInfo.setLastParseTime(new Date());
		fileInfo.setLastErrorCode(0);
		fileInfo.setFirstErrorCode(0);
		synchronized (queue) {
			if (!queue.contains(fileInfo)) {
				queue.addLast(fileInfo);
			}
		}
		// 发送消息到解析模块
		//MessageSender.sendNeedParseFile(fileInfo);
	}

	/**
	 * 删除队列中的某个Info
	 * 
	 * @param fileInfo
	 */
	public boolean removeParseFile(FileInfo info) {
		synchronized (queue) {
			return queue.remove(info);
		}
	}

	/**
	 * 对文件队列中的超过3分钟还没有处理的文件(可能是丢消息了),重新发消息
	 * 
	 */
	public void sendFileToParse() {
		LinkedList<FileInfo> list = new LinkedList<FileInfo>();
		synchronized (queue) {
			Iterator<FileInfo> itr = queue.iterator();
			while (itr.hasNext()) {
				FileInfo info = itr.next();
				Date time = info.getLastParseTime();
//				if (time != null
//						&& ((new Date().getTime() - time.getTime()) > PmContext
//								.getPmContext().getResendMsgTime() * 1000)) {
					list.add(info);
					// 重新设置时间
					info.setLastParseTime(new Date());
				//}
			}
		}
		for (FileInfo info : list) {
			// 发送消息到解析模块
			//MessageSender.sendNeedParseFile(info);
		}
		list.clear();
	}

	// public static void main(String[] args) {
	// for (int i = 0; i < 10; i++) {
	// FileInfo info = new FileInfo();
	// File file = new File("" + i);
	// info.setFile(file);
	// putParseFile(info);
	// }
	// sendFileToParse();
	// }
}

⌨️ 快捷键说明

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