45 Q_ASSERT(m_pTerminal);
46 return OnInitReturnValue::Fail;
51 qCritical(log) <<
"new CChannelSSH fail";
52 return OnInitReturnValue::Fail;
61 if(!m_pPara->GetCommands().isEmpty()) {
62 foreach (auto c, m_pPara->GetCommands()) {
63 emit m_pTerminal->sendData(c.toStdString().c_str(), c.length());
64 emit m_pTerminal->sendData(
"\r", 1);
70 check = connect(m_pChannelSSH, &CChannelSSHTerminal::readyRead,
76 nLen = m_pChannelSSH->bytesAvailable();
78 qDebug(log) <<
"No data";
82 nRet = m_pChannelSSH->read(buf, nLen);
84 if(m_pTerminal && nRet > 0) {
85 QByteArray data(buf, nRet);
87 emit m_pOperate->sigReceiveData(data);
88 if(m_pOperate->GetStats())
89 m_pOperate->GetStats()->AddReceives(nRet);
92 qCritical(log) <<
"The m_pTerminal is nullptr or nRet <= 0";
98 check = connect(m_pTerminal, &QTermWidget::sendData,
99 this, [&](
const char* data,
int len){
100 QEventTerminal* d =
new QEventTerminal((
char*)data, len);
101 QCoreApplication::postEvent(
this, d);
102 if(m_pOperate && m_pOperate->GetStats())
103 m_pOperate->GetStats()->AddSends(len);
104 m_pChannelSSH->WakeUp();
105 }, Qt::DirectConnection);
108 m_pChannelSSH->SetSize(m_pTerminal->screenLinesCount(),
109 m_pTerminal->screenColumnsCount());
111 if(!m_pChannelSSH->open(QIODevice::ReadWrite)) {
112 qCritical(log) <<
"Open ssh channel fail";
113 return OnInitReturnValue::Fail;
116 m_pTerminal->startTerminalTeletype();
118 return OnInitReturnValue::UseOnProcess;