summaryrefslogtreecommitdiffstats
path: root/Plugins/DbAndroid/dbandroidjsonconnection.h
diff options
context:
space:
mode:
Diffstat (limited to 'Plugins/DbAndroid/dbandroidjsonconnection.h')
-rw-r--r--Plugins/DbAndroid/dbandroidjsonconnection.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/Plugins/DbAndroid/dbandroidjsonconnection.h b/Plugins/DbAndroid/dbandroidjsonconnection.h
new file mode 100644
index 0000000..ef0c943
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroidjsonconnection.h
@@ -0,0 +1,65 @@
+#ifndef DBANDROIDJSONCONNECTION_H
+#define DBANDROIDJSONCONNECTION_H
+
+#include "dbandroidmode.h"
+#include "common/global.h"
+#include "common/expiringcache.h"
+#include "dbandroidconnection.h"
+#include <QObject>
+
+class DbAndroid;
+class AdbManager;
+class BlockingSocket;
+
+class DbAndroidJsonConnection : public DbAndroidConnection
+{
+ Q_OBJECT
+
+ public:
+ DbAndroidJsonConnection(DbAndroid* plugin, QObject *parent = 0);
+ ~DbAndroidJsonConnection();
+
+ bool connectToAndroid(const DbAndroidUrl& url);
+ void disconnectFromAndroid();
+ bool isConnected() const;
+ QByteArray send(const QByteArray& data);
+ QString getDbName() const;
+ QStringList getDbList();
+ QStringList getAppList();
+ bool isAppOkay() const;
+ bool deleteDatabase(const QString& dbName);
+ ExecutionResult executeQuery(const QString& query);
+
+ private:
+ QJsonDocument wrapQueryInJson(const QString& query);
+ bool connectToNetwork();
+ bool connectToDevice();
+ bool connectToTcp(const QString& ip, int port);
+ void cleanUp();
+ QByteArray sendBytes(const QByteArray& data);
+ void handleSocketError();
+ void handleConnectionFailed();
+ QStringList handleDbListResult(const QByteArray& results);
+ bool handleStdResult(const QByteArray& results);
+
+ static QByteArray sizeToBytes(qint32 size);
+ static qint32 bytesToSize(const QByteArray& bytes);
+ static QVariant convertJsonValue(const QJsonValue& value);
+
+ DbAndroid* plugin = nullptr;
+ AdbManager* adbManager = nullptr;
+ BlockingSocket* socket = nullptr;
+ DbAndroidUrl dbUrl;
+ DbAndroidMode mode = DbAndroidMode::NETWORK;
+ bool connectedState = false;
+
+ static_char* PASS_RESPONSE_OK = "{\"result\":\"ok\"}";
+ static_char* PING_RESPONSE_OK = "{\"result\":\"pong\"}";
+ static_char* LIST_CMD = "{cmd:\"LIST\"}";
+ static_char* DELETE_DB_CMD = "{cmd:\"DELETE_DB\",db:\"%1\"}";
+
+ private slots:
+ void handlePossibleDisconnection();
+};
+
+#endif // DBANDROIDJSONCONNECTION_H