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

📄 packetpool.java

📁 基于Jpcap开发的流量监控软件
💻 JAVA
字号:
package joel.ethernettools;
/**
 * THIS IS A TEMPORARY CONTAINER FOR ALL KINDS OF PACKETS.
 * IT IS HEAVYLY ACCESSED BY OTHER CLASSES/THREADS.
 * I USED ARRAY TO STORE PACKETS,THE LIMINITATION IS 1000 FOR NOW.
 * IF THE NETWORK ACTIVITY IS MORE HEAVY,INCREASE THE LIMINITATION,
 * OR THE SYSTEM WILL BE CRASHED.
 */
import java.util.Vector;

import jpcap.packet.Packet;

public class PacketPool {
	private Packet pool[];
	private OriginalPacket OriginalPacketPool[];
	private ProcessedPacket ProcessedPacketPool[];
	private Packet p;
	private OriginalPacket op;
	private ProcessedPacket pp;
	private int initialPoolSize=1000;
	private volatile int packetInPool=0,oriPacketInPool=0,prsdPacketInPool=0;
	public PacketPool() {
		pool=new Packet[initialPoolSize];
		OriginalPacketPool=new OriginalPacket[initialPoolSize];
		ProcessedPacketPool=new ProcessedPacket[initialPoolSize];
		System.out.println("Pool inited.");
	}
	protected int getPacketCount(){
			return this.packetInPool;		
	}
	protected int getOriginalPacketCount(){
		return this.oriPacketInPool;
	}
	protected int getProcessedPacketCount(){
		return this.prsdPacketInPool;
	}
	protected Packet getNewPacket() {
		if(packetInPool==0)
			return null;
		else{
			p=pool[packetInPool-1];
			pool[packetInPool-1]=null;
			packetInPool--;
		}
		return p;
	}

	protected OriginalPacket getNewOriginalPacket() {
		if(oriPacketInPool==0)
			return null;
		else{
			op=OriginalPacketPool[oriPacketInPool-1];
			OriginalPacketPool[oriPacketInPool-1]=null;
			oriPacketInPool--;
		}
		return op;
	}

	protected ProcessedPacket getNewProcessedPacket() {
		if(prsdPacketInPool==0)
			return null;
		else{
			pp=ProcessedPacketPool[prsdPacketInPool-1];
			ProcessedPacketPool[prsdPacketInPool-1]=null;
			prsdPacketInPool--;
		}
		return pp;
	}

	protected void addNewPacket(Packet p) {
		pool[packetInPool]=p;
		packetInPool++;
	}

	protected void addNewOriginalPacket(OriginalPacket op) {
		OriginalPacketPool[oriPacketInPool]=op;
		oriPacketInPool++;
	}

	protected void addNewProcessedPacket(ProcessedPacket pp) {
		ProcessedPacketPool[prsdPacketInPool]=pp;
		prsdPacketInPool++;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}

⌨️ 快捷键说明

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