Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F10907539
node.h
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
8 KB
Subscribers
None
node.h
View Options
// Copyright (c) 2018 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_INTERFACES_NODE_H
#define BITCOIN_INTERFACES_NODE_H
#include
<addrdb.h>
// For banmap_t
#include
<amount.h>
// For Amount
#include
<init.h>
// For HelpMessageMode
#include
<net.h>
// For CConnman::NumConnections
#include
<netaddress.h>
// For Network
#include
<cstddef>
#include
<cstdint>
#include
<functional>
#include
<memory>
#include
<string>
#include
<tuple>
#include
<vector>
class
CCoinControl
;
class
CFeeRate
;
struct
CNodeStateStats
;
struct
CNodeStats
;
class
Coin
;
class
Config
;
class
HTTPRPCRequestProcessor
;
class
proxyType
;
class
RPCServer
;
class
RPCTimerInterface
;
class
UniValue
;
namespace
interfaces
{
class
Handler
;
class
Wallet
;
//! Top-level interface for a bitcoin node (bitcoind process).
class
Node
{
public
:
virtual
~
Node
()
{}
//! Set command line arguments.
virtual
void
parseParameters
(
int
argc
,
const
char
*
const
argv
[])
=
0
;
//! Set a command line argument if it doesn't already have a value
virtual
bool
softSetArg
(
const
std
::
string
&
arg
,
const
std
::
string
&
value
)
=
0
;
//! Set a command line boolean argument if it doesn't already have a value
virtual
bool
softSetBoolArg
(
const
std
::
string
&
arg
,
bool
value
)
=
0
;
//! Load settings from configuration file.
virtual
void
readConfigFile
(
const
std
::
string
&
conf_path
)
=
0
;
//! Choose network parameters.
virtual
void
selectParams
(
const
std
::
string
&
network
)
=
0
;
//! Get network name.
virtual
std
::
string
getNetwork
()
=
0
;
//! Init logging.
virtual
void
initLogging
()
=
0
;
//! Init parameter interaction.
virtual
void
initParameterInteraction
()
=
0
;
//! Get warnings.
virtual
std
::
string
getWarnings
(
const
std
::
string
&
type
)
=
0
;
//! Initialize app dependencies.
virtual
bool
baseInitialize
(
Config
&
config
,
RPCServer
&
rpcServer
)
=
0
;
//! Start node.
virtual
bool
appInitMain
(
Config
&
config
,
HTTPRPCRequestProcessor
&
httpRPCRequestProcessor
)
=
0
;
//! Stop node.
virtual
void
appShutdown
()
=
0
;
//! Start shutdown.
virtual
void
startShutdown
()
=
0
;
//! Return whether shutdown was requested.
virtual
bool
shutdownRequested
()
=
0
;
//! Get help message string.
virtual
std
::
string
helpMessage
(
HelpMessageMode
mode
)
=
0
;
//! Map port.
virtual
void
mapPort
(
bool
use_upnp
)
=
0
;
//! Get proxy.
virtual
bool
getProxy
(
Network
net
,
proxyType
&
proxy_info
)
=
0
;
//! Get number of connections.
virtual
size_t
getNodeCount
(
CConnman
::
NumConnections
flags
)
=
0
;
//! Get stats for connected nodes.
using
NodesStats
=
std
::
vector
<
std
::
tuple
<
CNodeStats
,
bool
,
CNodeStateStats
>>
;
virtual
bool
getNodesStats
(
NodesStats
&
stats
)
=
0
;
//! Get ban map entries.
virtual
bool
getBanned
(
banmap_t
&
banmap
)
=
0
;
//! Ban node.
virtual
bool
ban
(
const
CNetAddr
&
net_addr
,
BanReason
reason
,
int64_t
ban_time_offset
)
=
0
;
//! Unban node.
virtual
bool
unban
(
const
CSubNet
&
ip
)
=
0
;
//! Disconnect node.
virtual
bool
disconnect
(
NodeId
id
)
=
0
;
//! Get total bytes recv.
virtual
int64_t
getTotalBytesRecv
()
=
0
;
//! Get total bytes sent.
virtual
int64_t
getTotalBytesSent
()
=
0
;
//! Get mempool size.
virtual
size_t
getMempoolSize
()
=
0
;
//! Get mempool dynamic usage.
virtual
size_t
getMempoolDynamicUsage
()
=
0
;
//! Get header tip height and time.
virtual
bool
getHeaderTip
(
int
&
height
,
int64_t
&
block_time
)
=
0
;
//! Get num blocks.
virtual
int
getNumBlocks
()
=
0
;
//! Get last block time.
virtual
int64_t
getLastBlockTime
()
=
0
;
//! Get verification progress.
virtual
double
getVerificationProgress
()
=
0
;
//! Is initial block download.
virtual
bool
isInitialBlockDownload
()
=
0
;
//! Get reindex.
virtual
bool
getReindex
()
=
0
;
//! Get importing.
virtual
bool
getImporting
()
=
0
;
//! Set network active.
virtual
void
setNetworkActive
(
bool
active
)
=
0
;
//! Get network active.
virtual
bool
getNetworkActive
()
=
0
;
//! Get minimum fee.
virtual
Amount
getMinimumFee
(
unsigned
int
tx_bytes
)
=
0
;
//! Get minimum fee with coin control.
virtual
Amount
getMinimumFee
(
unsigned
int
tx_bytes
,
const
CCoinControl
&
coin_control
)
=
0
;
//! Get max tx fee.
virtual
Amount
getMaxTxFee
()
=
0
;
//! Estimate smart fee.
virtual
CFeeRate
estimateSmartFee
()
=
0
;
//! Get dust relay fee.
virtual
CFeeRate
getDustRelayFee
()
=
0
;
//! Get fallback fee.
virtual
CFeeRate
getFallbackFee
()
=
0
;
//! Get pay tx fee.
virtual
CFeeRate
getPayTxFee
()
=
0
;
//! Set pay tx fee.
virtual
void
setPayTxFee
(
CFeeRate
rate
)
=
0
;
//! Execute rpc command.
virtual
UniValue
executeRpc
(
Config
&
config
,
const
std
::
string
&
command
,
const
UniValue
&
params
,
const
std
::
string
&
uri
)
=
0
;
//! List rpc commands.
virtual
std
::
vector
<
std
::
string
>
listRpcCommands
()
=
0
;
//! Set RPC timer interface if unset.
virtual
void
rpcSetTimerInterfaceIfUnset
(
RPCTimerInterface
*
iface
)
=
0
;
//! Unset RPC timer interface.
virtual
void
rpcUnsetTimerInterface
(
RPCTimerInterface
*
iface
)
=
0
;
//! Get unspent outputs associated with a transaction.
virtual
bool
getUnspentOutput
(
const
COutPoint
&
output
,
Coin
&
coin
)
=
0
;
//! Return interfaces for accessing wallets (if any).
virtual
std
::
vector
<
std
::
unique_ptr
<
Wallet
>>
getWallets
()
=
0
;
//! Register handler for init messages.
using
InitMessageFn
=
std
::
function
<
void
(
const
std
::
string
&
message
)
>
;
virtual
std
::
unique_ptr
<
Handler
>
handleInitMessage
(
InitMessageFn
fn
)
=
0
;
//! Register handler for message box messages.
using
MessageBoxFn
=
std
::
function
<
bool
(
const
std
::
string
&
message
,
const
std
::
string
&
caption
,
unsigned
int
style
)
>
;
virtual
std
::
unique_ptr
<
Handler
>
handleMessageBox
(
MessageBoxFn
fn
)
=
0
;
//! Register handler for question messages.
using
QuestionFn
=
std
::
function
<
bool
(
const
std
::
string
&
message
,
const
std
::
string
&
non_interactive_message
,
const
std
::
string
&
caption
,
unsigned
int
style
)
>
;
virtual
std
::
unique_ptr
<
Handler
>
handleQuestion
(
QuestionFn
fn
)
=
0
;
//! Register handler for progress messages.
using
ShowProgressFn
=
std
::
function
<
void
(
const
std
::
string
&
title
,
int
progress
,
bool
resume_possible
)
>
;
virtual
std
::
unique_ptr
<
Handler
>
handleShowProgress
(
ShowProgressFn
fn
)
=
0
;
//! Register handler for load wallet messages.
using
LoadWalletFn
=
std
::
function
<
void
(
std
::
unique_ptr
<
Wallet
>
wallet
)
>
;
virtual
std
::
unique_ptr
<
Handler
>
handleLoadWallet
(
LoadWalletFn
fn
)
=
0
;
//! Register handler for number of connections changed messages.
using
NotifyNumConnectionsChangedFn
=
std
::
function
<
void
(
int
new_num_connections
)
>
;
virtual
std
::
unique_ptr
<
Handler
>
handleNotifyNumConnectionsChanged
(
NotifyNumConnectionsChangedFn
fn
)
=
0
;
//! Register handler for network active messages.
using
NotifyNetworkActiveChangedFn
=
std
::
function
<
void
(
bool
network_active
)
>
;
virtual
std
::
unique_ptr
<
Handler
>
handleNotifyNetworkActiveChanged
(
NotifyNetworkActiveChangedFn
fn
)
=
0
;
//! Register handler for notify alert messages.
using
NotifyAlertChangedFn
=
std
::
function
<
void
()
>
;
virtual
std
::
unique_ptr
<
Handler
>
handleNotifyAlertChanged
(
NotifyAlertChangedFn
fn
)
=
0
;
//! Register handler for ban list messages.
using
BannedListChangedFn
=
std
::
function
<
void
()
>
;
virtual
std
::
unique_ptr
<
Handler
>
handleBannedListChanged
(
BannedListChangedFn
fn
)
=
0
;
//! Register handler for block tip messages.
using
NotifyBlockTipFn
=
std
::
function
<
void
(
bool
initial_download
,
int
height
,
int64_t
block_time
,
double
verification_progress
)
>
;
virtual
std
::
unique_ptr
<
Handler
>
handleNotifyBlockTip
(
NotifyBlockTipFn
fn
)
=
0
;
//! Register handler for header tip messages.
using
NotifyHeaderTipFn
=
std
::
function
<
void
(
bool
initial_download
,
int
height
,
int64_t
block_time
,
double
verification_progress
)
>
;
virtual
std
::
unique_ptr
<
Handler
>
handleNotifyHeaderTip
(
NotifyHeaderTipFn
fn
)
=
0
;
};
//! Return implementation of Node interface.
std
::
unique_ptr
<
Node
>
MakeNode
();
}
// namespace interfaces
#endif
// BITCOIN_INTERFACES_NODE_H
File Metadata
Details
Attached
Mime Type
text/x-c++
Expires
Mon, Nov 25, 08:01 (1 d, 17 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4566198
Default Alt Text
node.h (8 KB)
Attached To
rSTAGING Bitcoin ABC staging
Event Timeline
Log In to Comment