西城 created DIRMINA-1071:
---------------------------

             Summary: ReadFuture.awaitUninterruptibly(20, TimeUnit.SECONDS) is 
no use
                 Key: DIRMINA-1071
                 URL: https://issues.apache.org/jira/browse/DIRMINA-1071
             Project: MINA
          Issue Type: Bug
    Affects Versions: 2.0.16
            Reporter: 西城
         Attachments: N8@`F_%~AEU2MYVTE]IG~IY.png

Describe my problem:i want to send message to client for three times, when the 
first time I send to client,but client doesn't answer ,So I try to send 
again,When the second time I send,I can receive the answer ,But my core is 
struck in ReadFuture.awaitUninterruptibly(20, TimeUnit.SECONDS) until 
cancel.That is my code,Thanks to answer.

if (future.isWritten()) {
                        log.debug("成功发送数据" + protocolMsgVO.toByteString());
                        ReadFuture readFuture = session.read();
                        BaseProtocolMsgVO msgReceive = null;
                        // 等待数据读取完成 等待10s 如果没有返回 关掉连接
                        if (readFuture.awaitUninterruptibly(20, 
TimeUnit.SECONDS)) {
                                msgReceive = (BaseProtocolMsgVO) 
readFuture.getMessage();
                        } else {
                                session.getConfig().setUseReadOperation(false); 
// 设置为不需要读取数据
                                if(count >= 3){
                                        log.info("重发超过三次,断开连接");
                                        // 关掉连接
                                        session.closeNow();
                                        throw new BusiException("读取设备响应数据超时");
                                }else{
                                        log.info("重发次数:"+count);
                                        
session.getConfig().setUseReadOperation(false); // 设置为不需要读取数据
                                        sendCmd(deviceIp, protocolMsgVO, 
pk_user, openid);
                                }
                                
                        }
                        //重置重发次数
                        session.setAttribute("count", 0);
                        if (readFuture.getException() != null) {
                                session.getConfig().setUseReadOperation(false); 
// 设置为不需要读取数据
                                // 关掉连接
                                session.closeNow();
                                throw new 
BusiException(readFuture.getException().getMessage());
                        }



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to