diff options
| author | 2015-11-25 16:48:49 -0500 | |
|---|---|---|
| committer | 2015-11-25 16:48:49 -0500 | |
| commit | 7412693e086a7eafaa7ea861164caf523943e5fa (patch) | |
| tree | 0aee322e40572df306b9813546c7a12b3093bcea /Plugins/DbAndroid/dbandroidjsonconnection.h | |
| parent | 640196993d31cf5d6fdf36386990ec05f473a048 (diff) | |
| parent | 8e640722c62692818ab840d50b3758f89a41a54e (diff) | |
Merge tag 'upstream/3.0.7'
Upstream version 3.0.7
# gpg: Signature made Wed 25 Nov 2015 04:48:48 PM EST using RSA key ID EBE9BD91
# gpg: Good signature from "Unit 193 <unit193@gmail.com>"
# gpg: aka "Unit 193 <unit193@ninthfloor.org>"
# gpg: aka "Unit 193 <unit193@ubuntu.com>"
# gpg: aka "Unit 193 <unit193@ninthfloor.com>"
Diffstat (limited to 'Plugins/DbAndroid/dbandroidjsonconnection.h')
| -rw-r--r-- | Plugins/DbAndroid/dbandroidjsonconnection.h | 65 |
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 |
