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.

64 lines
1.3 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;
ConnectionType connType;
};
class LoadingDialog;
class ConnectionLoader {
public:
ConnectionLoader(MainWindow* main);
~ConnectionLoader();
void getConnection(std::function<void(RPC*)> cb);
private:
std::shared_ptr<ConnectionConfig*> autoDetectZcashConf();
std::shared_ptr<ConnectionConfig*> loadFromSettings();
LoadingDialog* d;
Ui_ConnectionDialog* connD;
MainWindow* main;
};
/**
* 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);
~Connection();
QNetworkAccessManager* restclient;
QNetworkRequest* request;
void doRPC(const json& payload, const std::function<void(json)>& cb,
const std::function<void(QNetworkReply::NetworkError, const json&)>& ne);
};
#endif