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

📄 sendqueue.java

📁 java支持的短信平台
💻 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 + -