Ejemplo n.º 1
0
 public void addMsgToSendList(MsgEntity msg) {
   synchronized (this) {
     Const.broadCastToActivity("INF", "SEND:" + msg.toString(), null, Const.whichActivity.MAIN);
     CLog.i(tag, "sendMsgList.add:" + msg.toString());
     this.sendMsgList.add(msg);
     notify();
   }
 }
Ejemplo n.º 2
0
  @Override
  public void run() {
    CLog.i(tag, "SocketOutputThread begin work");
    while (isStart) {
      CLog.i(tag, "sendMsgList.size()=" + sendMsgList.size());
      // 锁发送list
      synchronized (sendMsgList) {
        // 发送消息
        for (MsgEntity msg : sendMsgList) {
          String message = new String(msg.getBytes());
          Date currTime = new Date();
          CLog.i(tag, "####");
          CLog.i(tag, "currTime=" + df.format(currTime));
          CLog.i(tag, "msg=" + message);
          CLog.i(tag, "msg.getSendTime()=" + df.format(msg.getSendTime()));
          if (msg.getTryTimes() > 0 && msg.isComplete()) {
            sendMsgList.remove(msg);
            continue;
          }
          if (msg.getSendTime().getTime() <= currTime.getTime()) {
            msg.trySend();
            TCPClient.instance(mLogin)
                .sendMsg(Const.str2EncryptedByte(msg.toString(), "NAN", mLogin.getName()));
            msg.setSendDelay(Const.RETRY_SEND_SECOND);
            // Try send 3 times
            if (msg.getTryTimes() >= Const.RETRY_SEND_TIMES) {
              Const.broadCastToActivity(
                  "WARN", null, "Send order Fail:" + message, Const.whichActivity.MAIN);
              msg.setComplete();
            }
            if (msg.isComplete()) sendMsgList.remove(msg);
          }
        }
      }

      synchronized (this) {
        try {
          wait();
        } catch (InterruptedException e) {
          e.printStackTrace();
          Const.broadCastToActivity(
              "ERROR",
              null,
              "TCPOutputThread.wait():InterruptedException",
              Const.whichActivity.MAIN);
        } // After sending message Thread in waiting
      }
    }

    CLog.i(tag, "SocketOutputThread is over!");
  }