mirror of
https://github.com/Retropex/bitcoin.git
synced 2025-06-03 16:02:34 +02:00
Add signals for network local address added/removed
This commit is contained in:
parent
f4f4abd494
commit
09dfb2fe1b
@ -242,6 +242,10 @@ public:
|
||||
using NotifyNetworkActiveChangedFn = std::function<void(bool network_active)>;
|
||||
virtual std::unique_ptr<Handler> handleNotifyNetworkActiveChanged(NotifyNetworkActiveChangedFn fn) = 0;
|
||||
|
||||
//! Register handler for network local changed messages.
|
||||
using NotifyNetworkLocalChangedFn = std::function<void()>;
|
||||
virtual std::unique_ptr<Handler> handleNotifyNetworkLocalChanged(NotifyNetworkLocalChangedFn fn) = 0;
|
||||
|
||||
//! Register handler for notify alert messages.
|
||||
using NotifyAlertChangedFn = std::function<void()>;
|
||||
virtual std::unique_ptr<Handler> handleNotifyAlertChanged(NotifyAlertChangedFn fn) = 0;
|
||||
|
15
src/net.cpp
15
src/net.cpp
@ -298,9 +298,11 @@ bool AddLocal(const CService& addr_, int nScore)
|
||||
|
||||
LogPrintf("AddLocal(%s,%i)\n", addr.ToStringAddrPort(), nScore);
|
||||
|
||||
bool fAlready;
|
||||
{
|
||||
LOCK(g_maplocalhost_mutex);
|
||||
const auto [it, is_newly_added] = mapLocalHost.emplace(addr, LocalServiceInfo());
|
||||
fAlready = !is_newly_added;
|
||||
LocalServiceInfo &info = it->second;
|
||||
if (is_newly_added || nScore >= info.nScore) {
|
||||
info.nScore = nScore + (is_newly_added ? 0 : 1);
|
||||
@ -308,6 +310,10 @@ bool AddLocal(const CService& addr_, int nScore)
|
||||
}
|
||||
}
|
||||
|
||||
if (!fAlready) {
|
||||
uiInterface.NotifyNetworkLocalChanged();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -318,9 +324,12 @@ bool AddLocal(const CNetAddr &addr, int nScore)
|
||||
|
||||
void RemoveLocal(const CService& addr)
|
||||
{
|
||||
LOCK(g_maplocalhost_mutex);
|
||||
LogPrintf("RemoveLocal(%s)\n", addr.ToStringAddrPort());
|
||||
mapLocalHost.erase(addr);
|
||||
{
|
||||
LOCK(g_maplocalhost_mutex);
|
||||
LogPrintf("RemoveLocal(%s)\n", addr.ToStringAddrPort());
|
||||
mapLocalHost.erase(addr);
|
||||
}
|
||||
uiInterface.NotifyNetworkLocalChanged();
|
||||
}
|
||||
|
||||
void SetReachable(enum Network net, bool reachable)
|
||||
|
@ -19,6 +19,7 @@ struct UISignals {
|
||||
boost::signals2::signal<CClientUIInterface::InitWalletSig> InitWallet;
|
||||
boost::signals2::signal<CClientUIInterface::NotifyNumConnectionsChangedSig> NotifyNumConnectionsChanged;
|
||||
boost::signals2::signal<CClientUIInterface::NotifyNetworkActiveChangedSig> NotifyNetworkActiveChanged;
|
||||
boost::signals2::signal<CClientUIInterface::NotifyNetworkLocalChangedSig> NotifyNetworkLocalChanged;
|
||||
boost::signals2::signal<CClientUIInterface::NotifyAlertChangedSig> NotifyAlertChanged;
|
||||
boost::signals2::signal<CClientUIInterface::ShowProgressSig> ShowProgress;
|
||||
boost::signals2::signal<CClientUIInterface::NotifyBlockTipSig> NotifyBlockTip;
|
||||
@ -39,6 +40,7 @@ ADD_SIGNALS_IMPL_WRAPPER(InitMessage);
|
||||
ADD_SIGNALS_IMPL_WRAPPER(InitWallet);
|
||||
ADD_SIGNALS_IMPL_WRAPPER(NotifyNumConnectionsChanged);
|
||||
ADD_SIGNALS_IMPL_WRAPPER(NotifyNetworkActiveChanged);
|
||||
ADD_SIGNALS_IMPL_WRAPPER(NotifyNetworkLocalChanged);
|
||||
ADD_SIGNALS_IMPL_WRAPPER(NotifyAlertChanged);
|
||||
ADD_SIGNALS_IMPL_WRAPPER(ShowProgress);
|
||||
ADD_SIGNALS_IMPL_WRAPPER(NotifyBlockTip);
|
||||
@ -51,6 +53,7 @@ void CClientUIInterface::InitMessage(const std::string& message) { return g_ui_s
|
||||
void CClientUIInterface::InitWallet() { return g_ui_signals.InitWallet(); }
|
||||
void CClientUIInterface::NotifyNumConnectionsChanged(int newNumConnections) { return g_ui_signals.NotifyNumConnectionsChanged(newNumConnections); }
|
||||
void CClientUIInterface::NotifyNetworkActiveChanged(bool networkActive) { return g_ui_signals.NotifyNetworkActiveChanged(networkActive); }
|
||||
void CClientUIInterface::NotifyNetworkLocalChanged() { return g_ui_signals.NotifyNetworkLocalChanged(); }
|
||||
void CClientUIInterface::NotifyAlertChanged() { return g_ui_signals.NotifyAlertChanged(); }
|
||||
void CClientUIInterface::ShowProgress(const std::string& title, int nProgress, bool resume_possible) { return g_ui_signals.ShowProgress(title, nProgress, resume_possible); }
|
||||
void CClientUIInterface::NotifyBlockTip(SynchronizationState s, const CBlockIndex* i) { return g_ui_signals.NotifyBlockTip(s, i); }
|
||||
|
@ -90,6 +90,9 @@ public:
|
||||
/** Network activity state changed. */
|
||||
ADD_SIGNALS_DECL_WRAPPER(NotifyNetworkActiveChanged, void, bool networkActive);
|
||||
|
||||
/** Network local addresses changed. */
|
||||
ADD_SIGNALS_DECL_WRAPPER(NotifyNetworkLocalChanged, void, );
|
||||
|
||||
/**
|
||||
* Status bar alerts changed.
|
||||
*/
|
||||
|
@ -362,6 +362,10 @@ public:
|
||||
{
|
||||
return MakeSignalHandler(::uiInterface.NotifyNetworkActiveChanged_connect(fn));
|
||||
}
|
||||
std::unique_ptr<Handler> handleNotifyNetworkLocalChanged(NotifyNetworkLocalChangedFn fn) override
|
||||
{
|
||||
return MakeSignalHandler(::uiInterface.NotifyNetworkLocalChanged_connect(fn));
|
||||
}
|
||||
std::unique_ptr<Handler> handleNotifyAlertChanged(NotifyAlertChangedFn fn) override
|
||||
{
|
||||
return MakeSignalHandler(::uiInterface.NotifyAlertChanged_connect(fn));
|
||||
|
@ -250,6 +250,10 @@ void ClientModel::subscribeToCoreSignals()
|
||||
[this](bool network_active) {
|
||||
Q_EMIT networkActiveChanged(network_active);
|
||||
});
|
||||
m_handler_notify_network_local_changed = m_node.handleNotifyNetworkLocalChanged(
|
||||
[this]() {
|
||||
Q_EMIT networkLocalChanged();
|
||||
});
|
||||
m_handler_notify_alert_changed = m_node.handleNotifyAlertChanged(
|
||||
[this]() {
|
||||
qDebug() << "ClientModel: NotifyAlertChanged";
|
||||
@ -277,6 +281,7 @@ void ClientModel::unsubscribeFromCoreSignals()
|
||||
m_handler_show_progress->disconnect();
|
||||
m_handler_notify_num_connections_changed->disconnect();
|
||||
m_handler_notify_network_active_changed->disconnect();
|
||||
m_handler_notify_network_local_changed->disconnect();
|
||||
m_handler_notify_alert_changed->disconnect();
|
||||
m_handler_banned_list_changed->disconnect();
|
||||
m_handler_notify_block_tip->disconnect();
|
||||
|
@ -101,6 +101,7 @@ private:
|
||||
std::unique_ptr<interfaces::Handler> m_handler_show_progress;
|
||||
std::unique_ptr<interfaces::Handler> m_handler_notify_num_connections_changed;
|
||||
std::unique_ptr<interfaces::Handler> m_handler_notify_network_active_changed;
|
||||
std::unique_ptr<interfaces::Handler> m_handler_notify_network_local_changed;
|
||||
std::unique_ptr<interfaces::Handler> m_handler_notify_alert_changed;
|
||||
std::unique_ptr<interfaces::Handler> m_handler_banned_list_changed;
|
||||
std::unique_ptr<interfaces::Handler> m_handler_notify_block_tip;
|
||||
@ -123,6 +124,7 @@ Q_SIGNALS:
|
||||
void numBlocksChanged(int count, const QDateTime& blockDate, double nVerificationProgress, SyncType header, SynchronizationState sync_state);
|
||||
void mempoolSizeChanged(long count, size_t mempoolSizeInBytes);
|
||||
void networkActiveChanged(bool networkActive);
|
||||
void networkLocalChanged();
|
||||
void alertsChanged(const QString &warnings);
|
||||
void bytesChanged(quint64 totalBytesIn, quint64 totalBytesOut);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user