Skip to content
Snippets Groups Projects
Commit d4708f89 authored by akiraohgaki's avatar akiraohgaki
Browse files

receive and send message

parent b4a0172b
No related branches found
No related tags found
No related merge requests found
...@@ -93,8 +93,9 @@ void WebSocketServer::wsTextMessageReceived(const QString &message) ...@@ -93,8 +93,9 @@ void WebSocketServer::wsTextMessageReceived(const QString &message)
QWebSocket *wsClient = qobject_cast<QWebSocket *>(sender()); QWebSocket *wsClient = qobject_cast<QWebSocket *>(sender());
if (wsClient) { if (wsClient) {
qtlib::Json json(message.toUtf8()); qtlib::Json json(message.toUtf8());
if (json.isValid()) { if (json.isObject()) {
execRequest(json.toObject()); QJsonObject object = json.toObject();
receiveMessage(object["id"].toString(), object["func"].toString(), object["data"].toArray());
} }
} }
} }
...@@ -104,270 +105,222 @@ void WebSocketServer::wsBinaryMessageReceived(const QByteArray &message) ...@@ -104,270 +105,222 @@ void WebSocketServer::wsBinaryMessageReceived(const QByteArray &message)
QWebSocket *wsClient = qobject_cast<QWebSocket *>(sender()); QWebSocket *wsClient = qobject_cast<QWebSocket *>(sender());
if (wsClient) { if (wsClient) {
qtlib::Json json(message); qtlib::Json json(message);
if (json.isValid()) { if (json.isObject()) {
execRequest(json.toObject()); QJsonObject object = json.toObject();
receiveMessage(object["id"].toString(), object["func"].toString(), object["data"].toArray());
} }
} }
} }
void WebSocketServer::itemMetadataSetChanged() void WebSocketServer::itemMetadataSetChanged()
{ {
QJsonArray results; QJsonArray data;
sendMessage("", "ItemHandler::metadataSetChanged", data);
QJsonObject response;
response["id"] = QString("");
response["func"] = QString("ItemHandler::metadataSetChanged");
response["result"] = results;
sendResponse(response);
} }
void WebSocketServer::itemDownloadStarted(QJsonObject result) void WebSocketServer::itemDownloadStarted(QJsonObject result)
{ {
QJsonArray results; QJsonArray data;
results[0] = result; data[0] = result;
sendMessage("", "ItemHandler::downloadStarted", data);
QJsonObject response;
response["id"] = QString("");
response["func"] = QString("ItemHandler::downloadStarted");
response["result"] = results;
sendResponse(response);
} }
void WebSocketServer::itemDownloadFinished(QJsonObject result) void WebSocketServer::itemDownloadFinished(QJsonObject result)
{ {
QJsonArray results; QJsonArray data;
results[0] = result; data[0] = result;
sendMessage("", "ItemHandler::downloadFinished", data);
QJsonObject response;
response["id"] = QString("");
response["func"] = QString("ItemHandler::downloadFinished");
response["result"] = results;
sendResponse(response);
} }
void WebSocketServer::itemDownloadProgress(QString id, qint64 bytesReceived, qint64 bytesTotal) void WebSocketServer::itemDownloadProgress(QString id, qint64 bytesReceived, qint64 bytesTotal)
{ {
QJsonArray results; QJsonArray data;
results[0] = id; data[0] = id;
results[1] = bytesReceived; data[1] = bytesReceived;
results[2] = bytesTotal; data[2] = bytesTotal;
sendMessage("", "ItemHandler::downloadProgress", data);
QJsonObject response;
response["id"] = QString("");
response["func"] = QString("ItemHandler::downloadProgress");
response["result"] = results;
sendResponse(response);
} }
void WebSocketServer::itemInstallStarted(QJsonObject result) void WebSocketServer::itemInstallStarted(QJsonObject result)
{ {
QJsonArray results; QJsonArray data;
results[0] = result; data[0] = result;
sendMessage("", "ItemHandler::installStarted", data);
QJsonObject response;
response["id"] = QString("");
response["func"] = QString("ItemHandler::installStarted");
response["result"] = results;
sendResponse(response);
} }
void WebSocketServer::itemInstallFinished(QJsonObject result) void WebSocketServer::itemInstallFinished(QJsonObject result)
{ {
QJsonArray results; QJsonArray data;
results[0] = result; data[0] = result;
sendMessage("", "ItemHandler::installFinished", data);
QJsonObject response;
response["id"] = QString("");
response["func"] = QString("ItemHandler::installFinished");
response["result"] = results;
sendResponse(response);
} }
void WebSocketServer::itemUninstallStarted(QJsonObject result) void WebSocketServer::itemUninstallStarted(QJsonObject result)
{ {
QJsonArray results; QJsonArray data;
results[0] = result; data[0] = result;
sendMessage("", "ItemHandler::uninstallStarted", data);
QJsonObject response;
response["id"] = QString("");
response["func"] = QString("ItemHandler::uninstallStarted");
response["result"] = results;
sendResponse(response);
} }
void WebSocketServer::itemUninstallFinished(QJsonObject result) void WebSocketServer::itemUninstallFinished(QJsonObject result)
{ {
QJsonArray results; QJsonArray data;
results[0] = result; data[0] = result;
sendMessage("", "ItemHandler::uninstallFinished", data);
QJsonObject response;
response["id"] = QString("");
response["func"] = QString("ItemHandler::uninstallFinished");
response["result"] = results;
sendResponse(response);
} }
void WebSocketServer::execRequest(const QJsonObject &request) void WebSocketServer::receiveMessage(const QString &id, const QString &func, const QJsonArray &data)
{ {
/* request object format /* message object format
{ {
"id": "example", "id": "example",
"func": "functionName", "func": "functionName",
"arg": ["value", 2, true] "data": ["value", 2, true]
} }
*/ */
QString id = request["id"].toString(); QJsonArray resultData;
QString func = request["func"].toString();
QJsonArray arg = request["arg"].toArray();
QJsonArray results;
// WebSocketServer // WebSocketServer
if (func == "WebSocketServer::stop") { if (func == "WebSocketServer::stop") {
stop(); stop();
} }
else if (func == "WebSocketServer::isError") { else if (func == "WebSocketServer::isError") {
results[0] = isError(); resultData[0] = isError();
} }
else if (func == "WebSocketServer::errorString") { else if (func == "WebSocketServer::errorString") {
results[0] = errorString(); resultData[0] = errorString();
} }
else if (func == "WebSocketServer::serverUrl") { else if (func == "WebSocketServer::serverUrl") {
results[0] = serverUrl().toString(); resultData[0] = serverUrl().toString();
} }
// ConfigHandler // ConfigHandler
else if (func == "ConfigHandler::getAppConfigApplication") { else if (func == "ConfigHandler::getAppConfigApplication") {
results[0] = configHandler_->getAppConfigApplication(); resultData[0] = configHandler_->getAppConfigApplication();
} }
else if (func == "ConfigHandler::getAppConfigInstallTypes") { else if (func == "ConfigHandler::getAppConfigInstallTypes") {
results[0] = configHandler_->getAppConfigInstallTypes(); resultData[0] = configHandler_->getAppConfigInstallTypes();
} }
else if (func == "ConfigHandler::getUsrConfigApplication") { else if (func == "ConfigHandler::getUsrConfigApplication") {
results[0] = configHandler_->getUsrConfigApplication(); resultData[0] = configHandler_->getUsrConfigApplication();
} }
else if (func == "ConfigHandler::setUsrConfigApplication") { else if (func == "ConfigHandler::setUsrConfigApplication") {
results[0] = configHandler_->setUsrConfigApplication(arg[0].toObject()); resultData[0] = configHandler_->setUsrConfigApplication(data[0].toObject());
} }
else if (func == "ConfigHandler::getUsrConfigProviders") { else if (func == "ConfigHandler::getUsrConfigProviders") {
results[0] = configHandler_->getUsrConfigProviders(); resultData[0] = configHandler_->getUsrConfigProviders();
} }
else if (func == "ConfigHandler::setUsrConfigProviders") { else if (func == "ConfigHandler::setUsrConfigProviders") {
results[0] = configHandler_->setUsrConfigProviders(arg[0].toObject()); resultData[0] = configHandler_->setUsrConfigProviders(data[0].toObject());
} }
else if (func == "ConfigHandler::getUsrConfigCategories") { else if (func == "ConfigHandler::getUsrConfigCategories") {
results[0] = configHandler_->getUsrConfigCategories(); resultData[0] = configHandler_->getUsrConfigCategories();
} }
else if (func == "ConfigHandler::setUsrConfigCategories") { else if (func == "ConfigHandler::setUsrConfigCategories") {
results[0] = configHandler_->setUsrConfigCategories(arg[0].toObject()); resultData[0] = configHandler_->setUsrConfigCategories(data[0].toObject());
} }
else if (func == "ConfigHandler::getUsrConfigInstalledItems") { else if (func == "ConfigHandler::getUsrConfigInstalledItems") {
results[0] = configHandler_->getUsrConfigInstalledItems(); resultData[0] = configHandler_->getUsrConfigInstalledItems();
} }
else if (func == "ConfigHandler::setUsrConfigInstalledItems") { else if (func == "ConfigHandler::setUsrConfigInstalledItems") {
results[0] = configHandler_->setUsrConfigInstalledItems(arg[0].toObject()); resultData[0] = configHandler_->setUsrConfigInstalledItems(data[0].toObject());
} }
else if (func == "ConfigHandler::setUsrConfigProvidersProvider") { else if (func == "ConfigHandler::setUsrConfigProvidersProvider") {
results[0] = configHandler_->setUsrConfigProvidersProvider(arg[0].toString(), arg[1].toObject()); resultData[0] = configHandler_->setUsrConfigProvidersProvider(data[0].toString(), data[1].toObject());
} }
else if (func == "ConfigHandler::removeUsrConfigProvidersProvider") { else if (func == "ConfigHandler::removeUsrConfigProvidersProvider") {
results[0] = configHandler_->removeUsrConfigProvidersProvider(arg[0].toString()); resultData[0] = configHandler_->removeUsrConfigProvidersProvider(data[0].toString());
} }
else if (func == "ConfigHandler::setUsrConfigCategoriesProvider") { else if (func == "ConfigHandler::setUsrConfigCategoriesProvider") {
results[0] = configHandler_->setUsrConfigCategoriesProvider(arg[0].toString(), arg[1].toObject()); resultData[0] = configHandler_->setUsrConfigCategoriesProvider(data[0].toString(), data[1].toObject());
} }
else if (func == "ConfigHandler::removeUsrConfigCategoriesProvider") { else if (func == "ConfigHandler::removeUsrConfigCategoriesProvider") {
results[0] = configHandler_->removeUsrConfigCategoriesProvider(arg[0].toString()); resultData[0] = configHandler_->removeUsrConfigCategoriesProvider(data[0].toString());
} }
else if (func == "ConfigHandler::setUsrConfigCategoriesInstallType") { else if (func == "ConfigHandler::setUsrConfigCategoriesInstallType") {
results[0] = configHandler_->setUsrConfigCategoriesInstallType(arg[0].toString(), arg[1].toString(), arg[2].toString()); resultData[0] = configHandler_->setUsrConfigCategoriesInstallType(data[0].toString(), data[1].toString(), data[2].toString());
} }
else if (func == "ConfigHandler::setUsrConfigInstalledItemsItem") { else if (func == "ConfigHandler::setUsrConfigInstalledItemsItem") {
results[0] = configHandler_->setUsrConfigInstalledItemsItem(arg[0].toString(), arg[1].toObject()); resultData[0] = configHandler_->setUsrConfigInstalledItemsItem(data[0].toString(), data[1].toObject());
} }
else if (func == "ConfigHandler::removeUsrConfigInstalledItemsItem") { else if (func == "ConfigHandler::removeUsrConfigInstalledItemsItem") {
results[0] = configHandler_->removeUsrConfigInstalledItemsItem(arg[0].toString()); resultData[0] = configHandler_->removeUsrConfigInstalledItemsItem(data[0].toString());
} }
// SystemHandler // SystemHandler
else if (func == "SystemHandler::isUnix") { else if (func == "SystemHandler::isUnix") {
results[0] = systemHandler_->isUnix(); resultData[0] = systemHandler_->isUnix();
} }
else if (func == "SystemHandler::desktopEnvironment") { else if (func == "SystemHandler::desktopEnvironment") {
results[0] = systemHandler_->desktopEnvironment(); resultData[0] = systemHandler_->desktopEnvironment();
} }
else if (func == "SystemHandler::isApplicableType") { else if (func == "SystemHandler::isApplicableType") {
results[0] = systemHandler_->isApplicableType(arg[0].toString()); resultData[0] = systemHandler_->isApplicableType(data[0].toString());
} }
else if (func == "SystemHandler::applyFile") { else if (func == "SystemHandler::applyFile") {
results[0] = false; resultData[0] = false;
#ifdef QTLIB_UNIX #ifdef QTLIB_UNIX
results[0] = systemHandler_->applyFile(arg[0].toString(), arg[1].toString()); resultData[0] = systemHandler_->applyFile(data[0].toString(), data[1].toString());
#endif #endif
} }
// OcsHandler // OcsHandler
else if (func == "OcsHandler::addProviders") { else if (func == "OcsHandler::addProviders") {
results[0] = ocsHandler_->addProviders(arg[0].toString()); resultData[0] = ocsHandler_->addProviders(data[0].toString());
} }
else if (func == "OcsHandler::removeProvider") { else if (func == "OcsHandler::removeProvider") {
results[0] = ocsHandler_->removeProvider(arg[0].toString()); resultData[0] = ocsHandler_->removeProvider(data[0].toString());
} }
else if (func == "OcsHandler::updateAllCategories") { else if (func == "OcsHandler::updateAllCategories") {
results[0] = ocsHandler_->updateAllCategories(arg[0].toBool()); resultData[0] = ocsHandler_->updateAllCategories(data[0].toBool());
} }
else if (func == "OcsHandler::updateCategories") { else if (func == "OcsHandler::updateCategories") {
results[0] = ocsHandler_->updateCategories(arg[0].toString(), arg[1].toBool()); resultData[0] = ocsHandler_->updateCategories(data[0].toString(), data[1].toBool());
} }
else if (func == "OcsHandler::getContents") { else if (func == "OcsHandler::getContents") {
results[0] = ocsHandler_->getContents(arg[0].toString(), arg[1].toString(), resultData[0] = ocsHandler_->getContents(data[0].toString(), data[1].toString(),
arg[2].toString(), arg[3].toString(), data[2].toString(), data[3].toString(),
arg[4].toString(), arg[5].toString(), arg[6].toInt(), arg[7].toInt()); data[4].toString(), data[5].toString(), data[6].toInt(), data[7].toInt());
} }
else if (func == "OcsHandler::getContent") { else if (func == "OcsHandler::getContent") {
results[0] = ocsHandler_->getContent(arg[0].toString(), arg[1].toString()); resultData[0] = ocsHandler_->getContent(data[0].toString(), data[1].toString());
} }
// ItemHandler // ItemHandler
else if (func == "ItemHandler::metadataSet") { else if (func == "ItemHandler::metadataSet") {
results[0] = itemHandler_->metadataSet(); resultData[0] = itemHandler_->metadataSet();
} }
else if (func == "ItemHandler::download") { else if (func == "ItemHandler::download") {
itemHandler_->download(arg[0].toString(), arg[1].toString(), arg[2].toString(), arg[3].toString()); itemHandler_->download(data[0].toString(), data[1].toString(), data[2].toString(), data[3].toString());
} }
else if (func == "ItemHandler::uninstall") { else if (func == "ItemHandler::uninstall") {
itemHandler_->uninstall(arg[0].toString()); itemHandler_->uninstall(data[0].toString());
} }
// Default // Not supported
else { else {
return; return;
} }
QJsonObject response; sendMessage(id, func, resultData);
response["id"] = id;
response["func"] = func;
response["result"] = results;
sendResponse(response);
} }
void WebSocketServer::sendResponse(const QJsonObject &response) void WebSocketServer::sendMessage(const QString &id, const QString &func, const QJsonArray &data)
{ {
/* response object format /* message object format
{ {
"id": "example", "id": "example",
"func": "functionName", "func": "functionName",
"result": ["value", 2, true] "data": ["value", 2, true]
} }
*/ */
QJsonObject object;
object["id"] = id;
object["func"] = func;
object["data"] = data;
QByteArray binaryMessage = qtlib::Json(object).toJson();
QString textMessage = QString::fromUtf8(binaryMessage);
foreach (QWebSocket *wsClient, wsClients_) { foreach (QWebSocket *wsClient, wsClients_) {
wsClient->sendTextMessage(QString(qtlib::Json(response).toJson())); wsClient->sendTextMessage(textMessage);
//wsClient->sendBinaryMessage(qtlib::Json(response).toJson()); //wsClient->sendBinaryMessage(binaryMessage);
} }
} }
...@@ -2,7 +2,8 @@ ...@@ -2,7 +2,8 @@
#include <QObject> #include <QObject>
#include <QUrl> #include <QUrl>
//#include <QJsonObject> #include <QJsonObject>
#include <QJsonArray>
class QWebSocketServer; class QWebSocketServer;
class QWebSocket; class QWebSocket;
...@@ -47,8 +48,8 @@ private slots: ...@@ -47,8 +48,8 @@ private slots:
void itemUninstallFinished(QJsonObject result); void itemUninstallFinished(QJsonObject result);
private: private:
void execRequest(const QJsonObject &request); void receiveMessage(const QString &id, const QString &func, const QJsonArray &data);
void sendResponse(const QJsonObject &response); void sendMessage(const QString &id, const QString &func, const QJsonArray &data);
ConfigHandler *configHandler_; ConfigHandler *configHandler_;
SystemHandler *systemHandler_; SystemHandler *systemHandler_;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment