#include"Boss/Mod/AutoDisconnector.hpp" #include"Boss/Mod/BlockTracker.hpp" #include"Boss/Mod/ChannelCandidatePreinvestigator.hpp" #include"Boss/Mod/ChannelCandidateInvestigator/Main.hpp" #include"Boss/Mod/ChannelCreationDecider.hpp" #include"Boss/Mod/ChannelCreator/Main.hpp" #include"Boss/Mod/ChannelFinderByPopularity.hpp" #include"Boss/Mod/ChannelFundsComputer.hpp" #include"Boss/Mod/ConnectFinderByDns.hpp" #include"Boss/Mod/ConnectFinderByHardcode.hpp" #include"Boss/Mod/Connector.hpp" #include"Boss/Mod/CommandReceiver.hpp" #include"Boss/Mod/InitialConnect.hpp" #include"Boss/Mod/Initiator.hpp" #include"Boss/Mod/InternetConnectionMonitor.hpp" #include"Boss/Mod/JsonOutputter.hpp" #include"Boss/Mod/ListfundsAnnouncer.hpp" #include"Boss/Mod/ListpeersAnalyzer.hpp" #include"Boss/Mod/ListpeersAnnouncer.hpp" #include"Boss/Mod/Manifester.hpp" #include"Boss/Mod/NeedsConnectSolicitor.hpp" #include"Boss/Mod/OnchainFeeMonitor.hpp" #include"Boss/Mod/OnchainFundsAnnouncer.hpp" #include"Boss/Mod/Reconnector.hpp" #include"Boss/Mod/Timers.hpp" #include"Boss/Mod/Waiter.hpp" #include"Boss/Mod/all.hpp" #include namespace { class All { private: std::vector> modules; public: template std::shared_ptr install(As&&... as) { auto ptr = std::make_shared(as...); modules.push_back(std::shared_ptr(ptr)); return ptr; } }; } namespace Boss { namespace Mod { std::shared_ptr all( std::ostream& cout , S::Bus& bus , Ev::ThreadPool& threadpool , std::function< Net::Fd( std::string const& , std::string const& ) > open_rpc_socket ) { auto all = std::make_shared(); /* Basic. */ auto waiter = all->install(bus); auto imon = all->install( bus , threadpool , *waiter ); all->install(cout, bus); all->install(bus); /* Startup. */ all->install(bus); all->install(bus, threadpool, std::move(open_rpc_socket)); /* Regular timers. */ all->install(bus); all->install(bus, *waiter); /* Connection wrangling. */ all->install(bus); all->install(bus); all->install(bus); all->install(bus); all->install(bus); all->install(bus); all->install(bus); /* Status monitors. */ all->install(bus); all->install(bus); all->install(bus); all->install(bus, *waiter); all->install(bus); all->install(bus); /* Channel creation wrangling. */ all->install(bus, *waiter); all->install(bus); auto investigator = all->install< ChannelCandidateInvestigator::Main >(bus, *imon); all->install(bus); all->install(bus, *investigator); return all; } }}