44 Q_ASSERT(m_pTerminal);
45 return OnInitReturnValue::Fail;
50 qCritical(log) <<
"new CChannelSSH fail";
51 return OnInitReturnValue::Fail;
60 if(!m_pPara->GetCommands().isEmpty()) {
61 foreach (auto c, m_pPara->GetCommands()) {
62 emit m_pTerminal->sendData(c.toStdString().c_str(), c.length());
63 emit m_pTerminal->sendData(
"\r", 1);
69 check = connect(m_pChannelSSH, &CChannelSSHTerminal::readyRead,
75 nLen = m_pChannelSSH->bytesAvailable();
77 qDebug(log) <<
"No data";
81 nRet = m_pChannelSSH->read(buf, nLen);
83 if(m_pTerminal && nRet > 0) {
84 QByteArray data(buf, nRet);
86 emit m_pOperate->sigReceiveData(data);
87 if(m_pOperate->GetStats())
88 m_pOperate->GetStats()->AddReceives(nRet);
91 qCritical(log) <<
"The m_pTerminal is nullptr or nRet <= 0";
97 check = connect(m_pTerminal, &QTermWidget::sendData,
98 this, [&](
const char* data,
int len){
99 QEventTerminal* d =
new QEventTerminal((
char*)data, len);
100 QCoreApplication::postEvent(
this, d);
101 if(m_pOperate && m_pOperate->GetStats())
102 m_pOperate->GetStats()->AddSends(len);
103 m_pChannelSSH->WakeUp();
104 }, Qt::DirectConnection);
107 m_pChannelSSH->SetSize(m_pTerminal->screenLinesCount(),
108 m_pTerminal->screenColumnsCount());
110 if(!m_pChannelSSH->open(QIODevice::ReadWrite)) {
111 qCritical(log) <<
"Open ssh channel fail";
112 return OnInitReturnValue::Fail;
115 m_pTerminal->startTerminalTeletype();
117 return OnInitReturnValue::UseOnProcess;