| 27 | } |
| 28 | |
| 29 | int COperateRawStream::Start() |
| 30 | { |
| 31 | if(!m_pTerminal) |
| 32 | return -1; |
| 33 | |
| 34 | slotUpdateParameter(this); |
| 35 | |
| 36 | bool check = false; |
| 37 | check = connect(m_pTerminal, &QTermWidget::sendData, |
| 38 | this, [&](const char* buf, int len){ |
| 39 | if(!m_TcpSocket.isOpen()) return; |
| 40 | QByteArray data(buf, len); |
| 41 | //qDebug(log) << "Send data:" << data << data.toHex(':'); |
| 42 | qint64 nLen = 0; |
| 43 | switch(m_Parameter.GetType()) { |
| 44 | case CParameterRawStream::TYPE::TCP: |
| 45 | nLen = m_TcpSocket.write(data); |
| 46 | break; |
| 47 | case CParameterRawStream::TYPE::NamePipe: |
| 48 | break; |
| 49 | } |
| 50 | if(GetStats()) |
| 51 | GetStats()->AddSends(nLen); |
| 52 | }); |
| 53 | Q_ASSERT(check); |
| 54 | |
| 55 | check = connect(&m_TcpSocket, SIGNAL(connected()), |
| 56 | this, SIGNAL(sigRunning())); |
| 57 | Q_ASSERT(check); |
| 58 | check = connect(&m_TcpSocket, SIGNAL(readyRead()), |
| 59 | this, SLOT(slotReadyRead())); |
| 60 | Q_ASSERT(check); |
| 61 | check = connect(&m_TcpSocket, &QTcpSocket::errorOccurred, |
| 62 | this, [&](QAbstractSocket::SocketError error) { |
| 63 | qCritical(log) << m_TcpSocket.errorString() << error; |
| 64 | if(m_TcpSocket.isOpen()) |
| 65 | emit sigError(error, m_TcpSocket.errorString()); |
| 66 | }); |
| 67 | Q_ASSERT(check); |
| 68 | |
| 69 | switch(m_Parameter.GetType()) { |
| 70 | case CParameterRawStream::TYPE::TCP: { |
| 71 | auto &net = m_Parameter.m_Net; |
| 72 | m_TcpSocket.connectToHost(net.GetHost(), net.GetPort()); |
| 73 | break; |
| 74 | } |
| 75 | case CParameterRawStream::TYPE::NamePipe: |
| 76 | break; |
| 77 | default: |
| 78 | emit sigRunning(); |
| 79 | } |
| 80 | |
| 81 | m_pTerminal->startTerminalTeletype(); |
| 82 | |
| 83 | return 0; |
| 84 | } |
| 85 | |
| 86 | int COperateRawStream::Stop() |
nothing calls this directly
no test coverage detected