81 QTcpSocket::connectToHost(p_sRtServerHostName, 4217);
88 QString t_sCommand = QString(
"%1\n").arg(p_sCommand);
91 if (this->state() == QAbstractSocket::ConnectedState)
93 this->write(t_sCommand.toUtf8().constData(), t_sCommand.size());
94 this->waitForBytesWritten();
97 this->waitForReadyRead(1000);
98 QByteArray t_qByteArrayRaw;
101 while (this->bytesAvailable() > 0 && this->canReadLine())
102 t_qByteArrayRaw += this->readAll();
104 p_sReply = QString(t_qByteArrayRaw);
113 const QString t_sCommand = QString(
"{\"commands\":{%1}}\n").arg(
118 if (this->state() == QAbstractSocket::ConnectedState)
123 QDataStream out(&block, QIODevice::WriteOnly);
124 out.setVersion(QDataStream::Qt_5_1);
128 out.device()->seek(0);
129 out << (quint16)(block.size() -
sizeof(quint16));
132 this->waitForBytesWritten();
135 QDataStream in(
this);
136 in.setVersion(QDataStream::Qt_5_1);
138 quint16 blockSize = 0;
140 bool respComplete =
false;
144 this->waitForReadyRead(100);
148 if (this->bytesAvailable() >= (
int)
sizeof(quint16))
151 else if(this->bytesAvailable() >= blockSize)
156 }
while (!respComplete && blockSize < 65000);
158 this->write(t_sCommand.toUtf8().constData(), t_sCommand.size());
159 this->waitForBytesWritten();
162 bool respComplete =
false;
163 QByteArray t_qByteArrayRaw;
166 if (this->waitForReadyRead(100))
168 t_qByteArrayRaw += this->readAll();
171 respComplete = t_qByteArrayRaw.count(
'{')
172 == t_qByteArrayRaw.count(
'}');
174 qDebug() <<
"Response: " << t_qByteArrayRaw.size() <<
" bytes";
175 }
while (!respComplete);
176 t_sReply = QString(t_qByteArrayRaw);
181 qWarning() <<
"Request was not send, because client is not connected!";
186 m_sAvailableData = t_sReply;
198 m_commandManager[
"getbufsize"].send();
202 QByteArray t_sJsonCommands = m_sAvailableData.toUtf8();
206 QJsonParseError error;
207 QJsonDocument t_jsonDocumentOrigin = QJsonDocument::fromJson(t_sJsonCommands, &error);
209 if (error.error == QJsonParseError::NoError)
214 if(t_jsonDocumentOrigin.isObject() && t_jsonDocumentOrigin.object().value(QString(
"bufsize")) != QJsonValue::Undefined)
216 qint32 size = (qint32)t_jsonDocumentOrigin.object().value(QString(
"bufsize")).toDouble();
221 qCritical() <<
"Unable to parse JSON response: " << error.errorString();
231 const QString help(
"help");
232 const QString description(
"");
233 const Command cmdHelp(help, description);
237 m_commandManager.
clear();
241 QByteArray t_sJsonCommands = m_sAvailableData.toUtf8();
245 QJsonParseError error;
246 QJsonDocument t_jsonDocumentOrigin = QJsonDocument::fromJson(
247 t_sJsonCommands, &error);
249 if (error.error == QJsonParseError::NoError)
250 m_commandManager.
insert(t_jsonDocumentOrigin);
252 qCritical() <<
"Unable to parse JSON response: " << error.errorString();
261 m_commandManager[
"conlist"].send();
265 QByteArray t_sJsonConnectors = m_sAvailableData.toUtf8();
269 QJsonParseError error;
270 QJsonDocument t_jsonDocumentOrigin = QJsonDocument::fromJson(
271 t_sJsonConnectors, &error);
273 QJsonObject t_jsonObjectConnectors;
276 if(t_jsonDocumentOrigin.isObject() && t_jsonDocumentOrigin.object().value(QString(
"connectors")) != QJsonValue::Undefined)
277 t_jsonObjectConnectors = t_jsonDocumentOrigin.object().value(QString(
"connectors")).toObject();
280 qint32 p_iActiveId = -1;
281 p_qMapConnectors.clear();
284 QJsonObject::Iterator it;
285 for(it = t_jsonObjectConnectors.begin(); it != t_jsonObjectConnectors.end(); ++it)
287 QString t_qConnectorName = it.key();
289 qint32
id = it.value().toObject().value(QString(
"id")).toDouble();
291 if(!p_qMapConnectors.contains(
id))
292 p_qMapConnectors.insert(
id, t_qConnectorName);
294 qWarning(
"Warning: CommandMap contains command %s already. Insertion skipped.\n", it.key().toLatin1().constData());
297 if(it.value().toObject().value(QString(
"active")).toBool())
349 if (m_sAvailableData.size() > 0)
352 qint64 t_msecsStart = QDateTime::currentMSecsSinceEpoch();
356 < QDateTime::currentMSecsSinceEpoch() - t_msecsStart)
359 if (m_sAvailableData.size() > 0)
369 return m_commandManager[key];
376 return m_commandManager[key];
void insert(const QJsonDocument &p_jsonDocument)
void connectToHost(QString &p_sRtServerHostName)
QString sendCLICommand(const QString &p_sCommand)
Command & operator[](const QString &key)
void sendCommandJSON(const Command &p_command)
void response(QString p_sResponse)
void triggered(Command p_command)
QString toStringReadySend() const
RtCmdClient(QObject *parent=0)
bool waitForDataAvailable(qint32 msecs=30000) const
qint32 requestConnectors(QMap< qint32, QString > &p_qMapConnectors)
declaration of the RtCmdClient Class.