* @brief Handles timeout while waiting for receiver response. */
| 818 | * @brief Handles timeout while waiting for receiver response. |
| 819 | */ |
| 820 | void IO::Protocols::ZMODEM::handleTimeout() |
| 821 | { |
| 822 | Q_ASSERT(m_maxRetries > 0); |
| 823 | Q_ASSERT(m_timeoutMs >= 1000); |
| 824 | |
| 825 | if (!isActive()) |
| 826 | return; |
| 827 | |
| 828 | ++m_retryCount; |
| 829 | if (m_retryCount >= m_maxRetries) { |
| 830 | sendCancel(); |
| 831 | m_state = State::Idle; |
| 832 | if (m_file.isOpen()) |
| 833 | m_file.close(); |
| 834 | |
| 835 | Q_EMIT statusMessage(tr("Transfer timed out")); |
| 836 | Q_EMIT finished(false, tr("Timeout: no response from receiver")); |
| 837 | return; |
| 838 | } |
| 839 | |
| 840 | Q_EMIT statusMessage(tr("Timeout, retrying (%1/%2)…") |
| 841 | .arg(QString::number(m_retryCount), QString::number(m_maxRetries))); |
| 842 | |
| 843 | switch (m_state) { |
| 844 | case State::SentZRQINIT: |
| 845 | sendZRQINIT(); |
| 846 | break; |
| 847 | |
| 848 | case State::SentZFILE: |
| 849 | sendZFILE(); |
| 850 | break; |
| 851 | |
| 852 | case State::SentZEOF: |
| 853 | sendZEOF(); |
| 854 | break; |
| 855 | |
| 856 | case State::SentZFIN: |
| 857 | sendZFIN(); |
| 858 | break; |
| 859 | |
| 860 | default: |
| 861 | m_timeoutTimer.start(m_timeoutMs); |
| 862 | break; |
| 863 | } |
| 864 | } |