📄 sendqueue.java
字号:
package com.khan.sms.cmpp3control;
import java.util.HashMap;
import java.util.Iterator;
import com.khan.datetime.SMPTime;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class SendQueue {
private static SendQueue _instance;
private HashMap Cmpp_DataQueue;
private int Size;
public SendQueue(int size) {
Size = size;
Cmpp_DataQueue = new HashMap();
}
public synchronized boolean put(int seqID, byte[] data) {
if (Cmpp_DataQueue.size() < Size) {
CmppStatus cs = new CmppStatus(seqID, 0);
Cmpp_DataQueue.put(cs, data);
return true;
}
return false;
}
public synchronized byte[] get() {
Iterator it = Cmpp_DataQueue.keySet().iterator();
while (it.hasNext()) {
CmppStatus cs = (CmppStatus) it.next();
if (cs.status == 0) {
cs.status = 1; // 该记录的状态为正在发送
return (byte[]) Cmpp_DataQueue.get(cs);
}
}
return null;
}
public synchronized void removeTimeOut(int timeout) {
Iterator it = Cmpp_DataQueue.keySet().iterator();
while (it.hasNext()) {
CmppStatus cs = (CmppStatus) it.next();
if (cs.status == 1) {
if (SMPTime.getNow() - cs.buildtime >= timeout) {
it.remove();
//Cmpp_DataQueue.remove(cs);
}
}
}
}
public synchronized void remove(int seqID) {
Iterator it = Cmpp_DataQueue.keySet().iterator();
while (it.hasNext()) {
CmppStatus cs = (CmppStatus) it.next();
if (cs.seqID == seqID) {
it.remove();
//Cmpp_DataQueue.remove(cs);
}
}
}
class CmppStatus {
public int seqID = 0;
public int status = 0; //0 未发送, 1 发送中,
public long buildtime = SMPTime.getNow();
public CmppStatus(int seqID, int status) {
this.seqID = seqID;
this.status = status;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -