Hush full node GUI wallet
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
1.7 KiB

6 years ago
#ifndef CONNECTION_H
#define CONNECTION_H
#include "ui_connection.h"
#include "precompiled.h"
using json = nlohmann::json;
class MainWindow;
class RPC;
enum ConnectionType {
DetectedConfExternalZcashD = 1,
UISettingsZCashD,
InternalZcashD
};
struct ConnectionConfig {
QString host;
QString port;
QString rpcuser;
QString rpcpassword;
bool usingZcashConf;
6 years ago
ConnectionType connType;
};
class Connection;
6 years ago
class ConnectionLoader {
public:
ConnectionLoader(MainWindow* main, RPC* rpc);
6 years ago
~ConnectionLoader();
void loadConnection();
6 years ago
private:
std::shared_ptr<ConnectionConfig> autoDetectZcashConf();
std::shared_ptr<ConnectionConfig> loadFromSettings();
6 years ago
Connection* makeConnection(std::shared_ptr<ConnectionConfig> config);
void refreshZcashdState(Connection* connection);
int getProgressFromStatus(QString status);
void showError(QString explanation);
QDialog* d;
6 years ago
Ui_ConnectionDialog* connD;
6 years ago
MainWindow* main;
RPC* rpc;
6 years ago
};
/**
* Represents a connection to a zcashd. It may even start a new zcashd if needed.
* This is also a UI class, so it may show a dialog waiting for the connection.
*/
class Connection {
public:
Connection(QNetworkAccessManager* c, QNetworkRequest* r, std::shared_ptr<ConnectionConfig> conf);
6 years ago
~Connection();
QNetworkAccessManager* restclient;
QNetworkRequest* request;
std::shared_ptr<ConnectionConfig> config;
6 years ago
void doRPC(const json& payload, const std::function<void(json)>& cb,
const std::function<void(QNetworkReply::NetworkError, const json&)>& ne);
};
#endif