?? packetpool.java
字號(hào):
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
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -