?? sendpacketstate.java
字號:
package com.ll.smsbeans;import com.ll.smsbeans.cmpp3.CmppPacket;/*** *SendPacket作為在發送過程中記錄所發送的包發送時間和重復發送的次數的類,*用于判斷包是否發送成功。**<p>** @author listlike <a href="mailto:listlike@hotmail.com">* <i><listlike@hotmail.com></i></a>* */public class SendPacketState{ /** * PState 是一個枚舉類,為當前發送包的狀態。 * * @author listlike <a href="mailto:listlike@hotmail.com"> * <i><listlike@hotmail.com></i></a> */ public static final class PState { /* PState 枚舉值常數 */ public final static int NOT_SET = -1; public final static int SENDED = 0; public final static int RESPONSED = 1; public final static int FAILED = 2; /** */ private int value = NOT_SET; /** * 建立 <code>PState</code> 實例. * * @param newVal an <code>int</code> 值,當前的連接狀態。 * @exception IllegalArgumentException 狀態值不正確 */ protected PState(int newVal) throws IllegalArgumentException { if ((newVal < -1) || (newVal > 2)) throw new IllegalArgumentException("Invalid Enumeration Value"); value = newVal; } /** * 當前值的字符顯示. * * @return a <code>String</code> 枚舉值的名稱 */ public String toString() { switch (value) { case NOT_SET : return "NOT_SET"; case SENDED : return "SENDED"; case RESPONSED : return "RESPONSED"; case FAILED : return "FAILED"; default : return "Internal Error"; } } /** * <code>getValue</code> 得到當前的值。 * * @return <code>int</code> 當前的值。 */ public int getValue() { return value; } } public final static PState STATE_FAILED = new PState(PState.FAILED); public final static PState STATE_SENDED = new PState(PState.SENDED); public final static PState STATE_RESPONSED = new PState(PState.RESPONSED); public final static PState STATE_UNKNOWN = new PState(PState.NOT_SET); private PState state; /** * 發送的包 */ private Packet sendPacket; /** * 回復包 */ private Packet respPacket; /** * 重復發送次數 */ private int SendNum; /** * 發送時間 */ private long SendTime; /** * 構造函數 * * @param packet 發送的數據包 */ public SendPacketState(Packet packet) { sendPacket = packet; this.SendNum = 0; this.SendTime = System.currentTimeMillis(); state=new PState(PState.SENDED); } /** * 增加重復發送的次數 * */ public void addSendNum() { SendNum++; SendTime = System.currentTimeMillis(); } public boolean isOverTime() { return (System.currentTimeMillis() - SendTime) > (ConnectionBean.OVERTIME * 1000) ? true : false; } /** * * @return 當前發送的次數 */ public int getSendNum() { return SendNum; } /** * @return 當前已經發送的時間 */ public long getSendTime() { return SendTime; } /** * * @return 得到當前包的發送序列號,用于判斷是否與恢復包相符 */ public int getPacketSequenceId() { if (sendPacket instanceof CmppPacket) { CmppPacket cp = (CmppPacket) sendPacket; return cp.getSequenceId(); } else return -1; } /** * 重新構造equals,用于在容器中處理當前包 * * @see java.lang.Object#equals(java.lang.Object) */ public boolean equals(Object obj) { if (obj instanceof SendPacketState) { return ((SendPacketState) obj).getPacketSequenceId() == getPacketSequenceId(); } else return false; } /** * @return 發送包 */ public Packet getSendPacket() { return sendPacket; } public Packet getRespPacket() { return respPacket; } /** * @param packet */ public void setRespPacket(Packet packet) { respPacket = packet; } /** * @return */ public PState getState() { return state; } /** * @param state */ public void setState(PState state) { this.state = state; }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -