44 Q_ASSERT(m_pTerminal);
45 return OnInitReturnValue::Fail;
50 qCritical(log) <<
"new CChannelSSH fail";
51 return OnInitReturnValue::Fail;
56 if(!m_pPara->GetCommands().isEmpty()) {
57 foreach (auto c, m_pPara->GetCommands()) {
58 emit m_pTerminal->sendData(c.toStdString().c_str(), c.length());
59 emit m_pTerminal->sendData(
"\r", 1);
65 check = connect(m_pChannelSSH, &CChannelSSHTerminal::readyRead,
71 nLen = m_pChannelSSH->bytesAvailable();
73 qDebug(log) <<
"No data";
77 nRet = m_pChannelSSH->read(buf, nLen);
79 if(m_pTerminal && nRet > 0) {
80 QByteArray data(buf, nRet);
82 emit m_pOperate->sigReceiveData(data);
83 if(m_pOperate->GetStats())
84 m_pOperate->GetStats()->AddReceives(nRet);
87 qCritical(log) <<
"The m_pTerminal is nullptr or nRet <= 0";
93 check = connect(m_pTerminal, &QTermWidget::sendData,
94 this, [&](
const char* data,
int len){
95 QEventTerminal* d =
new QEventTerminal((
char*)data, len);
96 QCoreApplication::postEvent(
this, d);
97 if(m_pOperate && m_pOperate->GetStats())
98 m_pOperate->GetStats()->AddSends(len);
99 m_pChannelSSH->WakeUp();
100 }, Qt::DirectConnection);
103 m_pChannelSSH->SetSize(m_pTerminal->screenLinesCount(),
104 m_pTerminal->screenColumnsCount());
106 if(!m_pChannelSSH->open(QIODevice::ReadWrite)) {
107 qCritical(log) <<
"Open ssh channel fail";
108 return OnInitReturnValue::Fail;
111 m_pTerminal->startTerminalTeletype();
113 return OnInitReturnValue::UseOnProcess;