2020-10-07 15:06:38 +08:00
|
|
|
#include"Boss/Mod/ActiveProber.hpp"
|
2022-04-25 17:30:29 +08:00
|
|
|
#include"Boss/Mod/AmountSettingsHandler.hpp"
|
2020-09-13 21:51:47 +08:00
|
|
|
#include"Boss/Mod/AutoDisconnector.hpp"
|
2022-05-02 15:11:58 +08:00
|
|
|
#include"Boss/Mod/AvailableRpcCommandsAnnouncer.hpp"
|
2020-09-08 17:03:48 +08:00
|
|
|
#include"Boss/Mod/BlockTracker.hpp"
|
2020-09-27 18:06:31 +08:00
|
|
|
#include"Boss/Mod/BoltzSwapper/Main.hpp"
|
2020-09-13 11:44:34 +08:00
|
|
|
#include"Boss/Mod/ChannelCandidateInvestigator/Main.hpp"
|
2020-10-01 14:54:42 +08:00
|
|
|
#include"Boss/Mod/ChannelCandidateMatchmaker.hpp"
|
|
|
|
|
#include"Boss/Mod/ChannelCandidatePreinvestigator.hpp"
|
2020-10-13 15:53:44 +08:00
|
|
|
#include"Boss/Mod/ChannelCreateDestroyMonitor.hpp"
|
2020-09-15 14:41:55 +08:00
|
|
|
#include"Boss/Mod/ChannelCreationDecider.hpp"
|
2020-09-17 08:44:56 +08:00
|
|
|
#include"Boss/Mod/ChannelCreator/Main.hpp"
|
2020-09-30 15:49:45 +08:00
|
|
|
#include"Boss/Mod/ChannelFeeManager.hpp"
|
2020-09-30 15:26:28 +08:00
|
|
|
#include"Boss/Mod/ChannelFeeSetter.hpp"
|
2020-10-02 15:05:39 +08:00
|
|
|
#include"Boss/Mod/ChannelFinderByDistance.hpp"
|
2020-11-13 10:26:22 +08:00
|
|
|
#include"Boss/Mod/ChannelFinderByEarnedFee.hpp"
|
2020-10-01 17:09:39 +08:00
|
|
|
#include"Boss/Mod/ChannelFinderByListpays.hpp"
|
2020-09-10 22:09:37 +08:00
|
|
|
#include"Boss/Mod/ChannelFinderByPopularity.hpp"
|
2020-09-15 12:11:08 +08:00
|
|
|
#include"Boss/Mod/ChannelFundsComputer.hpp"
|
2021-01-26 20:54:47 +08:00
|
|
|
#include"Boss/Mod/ComplainerByLowConnectRate.hpp"
|
2021-02-01 12:56:46 +08:00
|
|
|
#include"Boss/Mod/ComplainerByLowSuccessPerDay.hpp"
|
2020-09-10 00:25:13 +08:00
|
|
|
#include"Boss/Mod/ConnectFinderByDns.hpp"
|
2020-09-10 08:47:02 +08:00
|
|
|
#include"Boss/Mod/ConnectFinderByHardcode.hpp"
|
2020-09-09 09:52:08 +08:00
|
|
|
#include"Boss/Mod/Connector.hpp"
|
2020-09-07 17:51:36 +08:00
|
|
|
#include"Boss/Mod/CommandReceiver.hpp"
|
2020-10-12 15:18:20 +08:00
|
|
|
#include"Boss/Mod/Dowser.hpp"
|
2021-01-13 00:01:47 +08:00
|
|
|
#include"Boss/Mod/EarningsRebalancer.hpp"
|
2020-10-23 23:48:07 +08:00
|
|
|
#include"Boss/Mod/EarningsTracker.hpp"
|
2020-10-16 21:54:17 +08:00
|
|
|
#include"Boss/Mod/FeeModderByBalance.hpp"
|
2026-01-22 19:26:27 -08:00
|
|
|
#include"Boss/Mod/FeeMonitor.hpp"
|
2021-03-12 18:31:23 +08:00
|
|
|
#include"Boss/Mod/FeeModderByPriceTheory.hpp"
|
2020-10-14 17:33:14 +08:00
|
|
|
#include"Boss/Mod/FeeModderBySize.hpp"
|
2020-10-05 16:28:44 +08:00
|
|
|
#include"Boss/Mod/ForwardFeeMonitor.hpp"
|
2020-10-22 08:48:09 +08:00
|
|
|
#include"Boss/Mod/FundsMover/Main.hpp"
|
2020-10-03 18:49:27 +08:00
|
|
|
#include"Boss/Mod/HtlcAcceptor.hpp"
|
2020-09-08 19:47:33 +08:00
|
|
|
#include"Boss/Mod/InitialConnect.hpp"
|
2020-10-26 11:31:33 +08:00
|
|
|
#include"Boss/Mod/InitialRebalancer.hpp"
|
2020-09-08 15:50:57 +08:00
|
|
|
#include"Boss/Mod/Initiator.hpp"
|
2020-09-14 20:34:09 +08:00
|
|
|
#include"Boss/Mod/InternetConnectionMonitor.hpp"
|
2020-09-28 11:28:07 +08:00
|
|
|
#include"Boss/Mod/InvoicePayer.hpp"
|
2020-10-25 09:48:28 +08:00
|
|
|
#include"Boss/Mod/JitRebalancer.hpp"
|
2020-09-07 16:43:19 +08:00
|
|
|
#include"Boss/Mod/JsonOutputter.hpp"
|
2021-11-27 00:43:35 +08:00
|
|
|
#include"Boss/Mod/ListfundsAnalyzer.hpp"
|
2020-09-15 11:29:39 +08:00
|
|
|
#include"Boss/Mod/ListfundsAnnouncer.hpp"
|
2020-09-28 13:56:39 +08:00
|
|
|
#include"Boss/Mod/ListpaysHandler.hpp"
|
2020-09-13 18:05:29 +08:00
|
|
|
#include"Boss/Mod/ListpeersAnalyzer.hpp"
|
2020-09-10 10:54:18 +08:00
|
|
|
#include"Boss/Mod/ListpeersAnnouncer.hpp"
|
2020-09-07 19:05:56 +08:00
|
|
|
#include"Boss/Mod/Manifester.hpp"
|
2020-10-22 11:38:47 +08:00
|
|
|
#include"Boss/Mod/MoveFundsCommand.hpp"
|
2020-09-09 15:18:25 +08:00
|
|
|
#include"Boss/Mod/NeedsConnectSolicitor.hpp"
|
2020-09-29 14:51:19 +08:00
|
|
|
#include"Boss/Mod/NeedsOnchainFundsSwapper.hpp"
|
2020-09-28 16:17:47 +08:00
|
|
|
#include"Boss/Mod/NewaddrHandler.hpp"
|
2020-09-30 09:56:58 +08:00
|
|
|
#include"Boss/Mod/NodeBalanceSwapper.hpp"
|
2020-09-12 19:23:19 +08:00
|
|
|
#include"Boss/Mod/OnchainFeeMonitor.hpp"
|
2020-09-15 09:11:12 +08:00
|
|
|
#include"Boss/Mod/OnchainFundsAnnouncer.hpp"
|
2020-11-20 00:11:38 +08:00
|
|
|
#include"Boss/Mod/OnchainFundsIgnorer.hpp"
|
2021-04-28 19:02:31 +08:00
|
|
|
#include"Boss/Mod/PaymentDeleter.hpp"
|
2020-09-30 13:20:24 +08:00
|
|
|
#include"Boss/Mod/PeerCompetitorFeeMonitor/Main.hpp"
|
2020-11-25 08:49:16 +08:00
|
|
|
#include"Boss/Mod/PeerComplaintsDesk/Main.hpp"
|
2022-05-29 10:05:03 +08:00
|
|
|
#include"Boss/Mod/PeerFromScidMapper.hpp"
|
2020-10-06 15:38:13 +08:00
|
|
|
#include"Boss/Mod/PeerMetrician.hpp"
|
2020-10-06 12:35:55 +08:00
|
|
|
#include"Boss/Mod/PeerStatistician.hpp"
|
2022-05-09 06:22:25 +08:00
|
|
|
#include"Boss/Mod/RebalanceUnmanager.hpp"
|
2020-09-10 14:31:05 +08:00
|
|
|
#include"Boss/Mod/Reconnector.hpp"
|
2020-10-07 16:08:09 +08:00
|
|
|
#include"Boss/Mod/RegularActiveProbe.hpp"
|
2022-04-28 13:00:28 +08:00
|
|
|
#include"Boss/Mod/RpcWrapper.hpp"
|
2021-02-09 14:04:26 +08:00
|
|
|
#include"Boss/Mod/SelfUptimeMonitor.hpp"
|
2020-10-04 22:51:12 +08:00
|
|
|
#include"Boss/Mod/SendpayResultMonitor.hpp"
|
2020-09-18 06:21:47 +08:00
|
|
|
#include"Boss/Mod/StatusCommand.hpp"
|
2020-09-29 08:13:36 +08:00
|
|
|
#include"Boss/Mod/SwapManager.hpp"
|
2021-10-29 10:17:08 +08:00
|
|
|
#include"Boss/Mod/SwapReporter.hpp"
|
2020-11-24 13:01:01 +08:00
|
|
|
#include"Boss/Mod/TimerTwiceDailyAnnouncer.hpp"
|
2020-09-08 18:40:19 +08:00
|
|
|
#include"Boss/Mod/Timers.hpp"
|
2021-03-01 13:52:14 +08:00
|
|
|
#include"Boss/Mod/UnmanagedManager.hpp"
|
2020-09-07 14:01:35 +08:00
|
|
|
#include"Boss/Mod/Waiter.hpp"
|
2020-09-07 11:52:37 +08:00
|
|
|
#include"Boss/Mod/all.hpp"
|
|
|
|
|
#include<vector>
|
|
|
|
|
|
|
|
|
|
namespace {
|
|
|
|
|
|
|
|
|
|
class All {
|
|
|
|
|
private:
|
|
|
|
|
std::vector<std::shared_ptr<void>> modules;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
template<typename M, typename... As>
|
2020-09-07 14:01:35 +08:00
|
|
|
std::shared_ptr<M> install(As&&... as) {
|
2020-09-07 11:52:37 +08:00
|
|
|
auto ptr = std::make_shared<M>(as...);
|
2020-09-07 14:01:35 +08:00
|
|
|
modules.push_back(std::shared_ptr<void>(ptr));
|
|
|
|
|
return ptr;
|
2020-09-07 11:52:37 +08:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
namespace Boss { namespace Mod {
|
|
|
|
|
|
|
|
|
|
std::shared_ptr<void> all( std::ostream& cout
|
|
|
|
|
, S::Bus& bus
|
|
|
|
|
, Ev::ThreadPool& threadpool
|
2020-09-07 21:50:38 +08:00
|
|
|
, std::function< Net::Fd( std::string const&
|
|
|
|
|
, std::string const&
|
|
|
|
|
)
|
|
|
|
|
> open_rpc_socket
|
2020-09-07 11:52:37 +08:00
|
|
|
) {
|
|
|
|
|
auto all = std::make_shared<All>();
|
|
|
|
|
|
2020-09-17 11:16:08 +08:00
|
|
|
/* Basic. */
|
2020-09-07 14:01:35 +08:00
|
|
|
auto waiter = all->install<Waiter>(bus);
|
2020-09-14 20:34:09 +08:00
|
|
|
auto imon = all->install<InternetConnectionMonitor>( bus
|
|
|
|
|
, threadpool
|
|
|
|
|
, *waiter
|
|
|
|
|
);
|
2020-09-07 16:43:19 +08:00
|
|
|
all->install<JsonOutputter>(cout, bus);
|
2020-09-07 17:51:36 +08:00
|
|
|
all->install<CommandReceiver>(bus);
|
2022-04-28 13:00:28 +08:00
|
|
|
all->install<RpcWrapper>(bus);
|
2022-05-02 15:11:58 +08:00
|
|
|
all->install<AvailableRpcCommandsAnnouncer>(bus);
|
2020-09-17 11:16:08 +08:00
|
|
|
|
|
|
|
|
/* Startup. */
|
2020-09-07 19:05:56 +08:00
|
|
|
all->install<Manifester>(bus);
|
2020-09-08 15:50:57 +08:00
|
|
|
all->install<Initiator>(bus, threadpool, std::move(open_rpc_socket));
|
2020-09-17 11:16:08 +08:00
|
|
|
|
2022-04-25 17:30:29 +08:00
|
|
|
/* General settings. */
|
|
|
|
|
all->install<AmountSettingsHandler>(bus);
|
|
|
|
|
|
2020-09-17 11:16:08 +08:00
|
|
|
/* Regular timers. */
|
2020-09-08 17:03:48 +08:00
|
|
|
all->install<BlockTracker>(bus);
|
2020-09-08 18:40:19 +08:00
|
|
|
all->install<Timers>(bus, *waiter);
|
2020-11-24 13:01:01 +08:00
|
|
|
all->install<TimerTwiceDailyAnnouncer>(bus);
|
2020-09-17 11:16:08 +08:00
|
|
|
|
|
|
|
|
/* Connection wrangling. */
|
2020-09-08 19:47:33 +08:00
|
|
|
all->install<InitialConnect>(bus);
|
2020-09-09 09:52:08 +08:00
|
|
|
all->install<Connector>(bus);
|
2020-09-09 15:18:25 +08:00
|
|
|
all->install<NeedsConnectSolicitor>(bus);
|
2020-09-10 09:24:34 +08:00
|
|
|
all->install<ConnectFinderByDns>(bus);
|
2020-09-10 08:47:02 +08:00
|
|
|
all->install<ConnectFinderByHardcode>(bus);
|
2020-09-17 11:16:08 +08:00
|
|
|
all->install<Reconnector>(bus);
|
|
|
|
|
all->install<AutoDisconnector>(bus);
|
|
|
|
|
|
|
|
|
|
/* Status monitors. */
|
2020-09-15 12:11:08 +08:00
|
|
|
all->install<ChannelFundsComputer>(bus);
|
2020-09-10 10:54:18 +08:00
|
|
|
all->install<ListpeersAnnouncer>(bus);
|
2020-09-13 18:05:29 +08:00
|
|
|
all->install<ListpeersAnalyzer>(bus);
|
2020-09-15 13:26:41 +08:00
|
|
|
all->install<OnchainFeeMonitor>(bus, *waiter);
|
2020-09-17 11:16:08 +08:00
|
|
|
all->install<ListfundsAnnouncer>(bus);
|
2021-11-27 00:43:35 +08:00
|
|
|
all->install<ListfundsAnalyzer>(bus);
|
2020-09-17 11:16:08 +08:00
|
|
|
all->install<OnchainFundsAnnouncer>(bus);
|
2020-11-20 00:11:38 +08:00
|
|
|
all->install<OnchainFundsIgnorer>(bus);
|
2020-10-13 15:53:44 +08:00
|
|
|
all->install<ChannelCreateDestroyMonitor>(bus);
|
2021-02-09 14:04:26 +08:00
|
|
|
all->install<SelfUptimeMonitor>(bus);
|
2020-09-17 11:16:08 +08:00
|
|
|
|
|
|
|
|
/* Channel creation wrangling. */
|
2020-10-02 15:54:57 +08:00
|
|
|
all->install<ChannelFinderByDistance>(bus, *waiter);
|
2020-11-13 10:26:22 +08:00
|
|
|
all->install<ChannelFinderByEarnedFee>(bus);
|
2020-10-01 17:09:39 +08:00
|
|
|
all->install<ChannelFinderByListpays>(bus);
|
2020-10-02 15:05:39 +08:00
|
|
|
all->install<ChannelFinderByPopularity>(bus, *waiter);
|
2020-09-14 04:17:57 +08:00
|
|
|
all->install<ChannelCandidatePreinvestigator>(bus);
|
2020-09-17 08:44:56 +08:00
|
|
|
auto investigator = all->install< ChannelCandidateInvestigator::Main
|
|
|
|
|
>(bus, *imon);
|
2020-09-15 14:41:55 +08:00
|
|
|
all->install<ChannelCreationDecider>(bus);
|
2020-09-17 14:00:05 +08:00
|
|
|
all->install<ChannelCreator::Main>(bus, *waiter, *investigator);
|
2020-10-01 14:54:42 +08:00
|
|
|
all->install<ChannelCandidateMatchmaker>(bus);
|
2020-10-12 15:18:20 +08:00
|
|
|
all->install<Dowser>(bus);
|
2020-09-15 09:11:12 +08:00
|
|
|
|
2020-09-18 06:21:47 +08:00
|
|
|
/* Status. */
|
|
|
|
|
all->install<StatusCommand>(bus);
|
|
|
|
|
|
2020-09-27 18:06:31 +08:00
|
|
|
/* Offchain-to-onchain swap. */
|
2020-09-28 16:17:47 +08:00
|
|
|
all->install<NewaddrHandler>(bus);
|
2020-09-27 18:06:31 +08:00
|
|
|
all->install<BoltzSwapper::Main>(bus, threadpool);
|
2020-09-29 08:13:36 +08:00
|
|
|
all->install<SwapManager>(bus);
|
2020-09-29 14:51:19 +08:00
|
|
|
all->install<NeedsOnchainFundsSwapper>(bus);
|
2020-09-30 09:56:58 +08:00
|
|
|
all->install<NodeBalanceSwapper>(bus);
|
2021-10-29 10:17:08 +08:00
|
|
|
all->install<SwapReporter>(bus);
|
2020-09-27 18:06:31 +08:00
|
|
|
|
2020-09-28 11:28:07 +08:00
|
|
|
/* Invoice wrangling. */
|
|
|
|
|
all->install<InvoicePayer>(bus);
|
2020-09-28 13:56:39 +08:00
|
|
|
all->install<ListpaysHandler>(bus);
|
2021-04-28 19:02:31 +08:00
|
|
|
all->install<PaymentDeleter>(bus);
|
2020-09-28 11:28:07 +08:00
|
|
|
|
2020-09-30 13:20:24 +08:00
|
|
|
/* Channel fees. */
|
2026-01-22 19:26:27 -08:00
|
|
|
all->install<FeeMonitor>(bus);
|
2020-09-30 13:20:24 +08:00
|
|
|
all->install<PeerCompetitorFeeMonitor::Main>(bus);
|
2020-09-30 15:26:28 +08:00
|
|
|
all->install<ChannelFeeSetter>(bus);
|
2020-09-30 15:49:45 +08:00
|
|
|
all->install<ChannelFeeManager>(bus);
|
2020-10-14 17:33:14 +08:00
|
|
|
all->install<FeeModderBySize>(bus);
|
2020-10-16 21:54:17 +08:00
|
|
|
all->install<FeeModderByBalance>(bus);
|
2021-03-12 18:31:23 +08:00
|
|
|
all->install<FeeModderByPriceTheory>(bus);
|
2020-09-30 13:20:24 +08:00
|
|
|
|
2020-10-03 18:49:27 +08:00
|
|
|
/* HTLC manipulation. */
|
|
|
|
|
all->install<HtlcAcceptor>(bus, *waiter);
|
|
|
|
|
|
2020-10-04 22:51:12 +08:00
|
|
|
/* Bad peer monitoring. */
|
|
|
|
|
all->install<SendpayResultMonitor>(bus);
|
2020-10-05 16:28:44 +08:00
|
|
|
all->install<ForwardFeeMonitor>(bus);
|
2020-10-06 12:35:55 +08:00
|
|
|
all->install<PeerStatistician>(bus);
|
2020-10-06 15:38:13 +08:00
|
|
|
all->install<PeerMetrician>(bus);
|
2020-10-07 15:06:38 +08:00
|
|
|
all->install<ActiveProber>(bus, *investigator);
|
2020-10-07 16:08:09 +08:00
|
|
|
all->install<RegularActiveProbe>(bus);
|
2020-11-25 08:49:16 +08:00
|
|
|
/* Peer complaints. */
|
|
|
|
|
all->install<PeerComplaintsDesk::Main>(bus);
|
2021-01-26 20:54:47 +08:00
|
|
|
all->install<ComplainerByLowConnectRate>(bus);
|
2021-05-29 07:55:44 +08:00
|
|
|
#ifdef ENABLE_COMPLAINER_BY_LOW_SUCCESS_PER_DAY
|
2021-02-01 12:56:46 +08:00
|
|
|
all->install<ComplainerByLowSuccessPerDay>(bus);
|
2021-05-29 07:55:44 +08:00
|
|
|
#endif /* ENABLE_COMPLAINER_BY_LOW_SUCCESS_PER_DAY */
|
2020-10-04 22:51:12 +08:00
|
|
|
|
2020-10-22 08:48:09 +08:00
|
|
|
/* Channel balancing. */
|
|
|
|
|
all->install<FundsMover::Main>(bus);
|
2020-10-22 11:38:47 +08:00
|
|
|
all->install<MoveFundsCommand>(bus);
|
2020-10-23 23:48:07 +08:00
|
|
|
all->install<EarningsTracker>(bus);
|
2020-10-25 09:48:28 +08:00
|
|
|
all->install<JitRebalancer>(bus);
|
2022-05-11 18:20:43 +08:00
|
|
|
#ifdef ENABLE_INITIAL_REBALANCER
|
2020-10-26 11:31:33 +08:00
|
|
|
all->install<InitialRebalancer>(bus);
|
2022-05-11 18:20:43 +08:00
|
|
|
#endif /* ENABLE_INITIAL_REBALANCER */
|
2021-01-13 00:01:47 +08:00
|
|
|
all->install<EarningsRebalancer>(bus);
|
2022-05-09 06:22:25 +08:00
|
|
|
all->install<RebalanceUnmanager>(bus);
|
2020-10-22 08:48:09 +08:00
|
|
|
|
2021-03-01 13:52:14 +08:00
|
|
|
/* Unmanaged nodes. */
|
|
|
|
|
all->install<UnmanagedManager>(bus);
|
|
|
|
|
|
2022-05-29 10:05:03 +08:00
|
|
|
/* Utility. */
|
|
|
|
|
all->install<PeerFromScidMapper>(bus);
|
|
|
|
|
|
2020-09-07 11:52:37 +08:00
|
|
|
return all;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}}
|