55 lines
1.5 KiB
C++
55 lines
1.5 KiB
C++
// Copyright (c) 2011-2015 The Cryptonote developers
|
|
// Distributed under the MIT/X11 software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#pragma once
|
|
|
|
#include <functional>
|
|
#include <memory>
|
|
#include <string>
|
|
#include <system_error>
|
|
|
|
#include <cryptonote_core/CoreConfig.h>
|
|
|
|
namespace cryptonote {
|
|
|
|
class Currency;
|
|
|
|
}
|
|
|
|
namespace CryptoNote {
|
|
|
|
class INode;
|
|
class IWallet;
|
|
|
|
}
|
|
|
|
namespace WalletGui {
|
|
|
|
class Node {
|
|
public:
|
|
virtual ~Node() = 0;
|
|
virtual void init(const std::function<void(std::error_code)>& callback) = 0;
|
|
virtual void deinit() = 0;
|
|
|
|
virtual std::string convertPaymentId(const std::string& paymentIdString) = 0;
|
|
virtual std::string extractPaymentId(const std::string& extra) = 0;
|
|
virtual uint64_t getLastKnownBlockHeight() const = 0;
|
|
virtual uint64_t getLastLocalBlockHeight() const = 0;
|
|
virtual uint64_t getLastLocalBlockTimestamp() const = 0;
|
|
virtual uint64_t getPeerCount() const = 0;
|
|
|
|
virtual CryptoNote::IWallet* createWallet() = 0;
|
|
};
|
|
|
|
class INodeCallback {
|
|
public:
|
|
virtual void peerCountUpdated(Node& node, size_t count) = 0;
|
|
virtual void localBlockchainUpdated(Node& node, uint64_t height) = 0;
|
|
virtual void lastKnownBlockHeightUpdated(Node& node, uint64_t height) = 0;
|
|
};
|
|
|
|
Node* createRpcNode(const cryptonote::Currency& currency, INodeCallback& callback, const std::string& nodeHost, unsigned short nodePort);
|
|
Node* createInprocessNode(const cryptonote::Currency& currency, INodeCallback& callback, const cryptonote::CoreConfig& coreConfig);
|
|
|
|
}
|