forked from bisq-network/bisq
/
DaoSetup.java
118 lines (106 loc) · 5.24 KB
/
DaoSetup.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/*
* This file is part of Bisq.
*
* Bisq is free software: you can redistribute it and/or modify it
* under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or (at
* your option) any later version.
*
* Bisq is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public
* License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with Bisq. If not, see <http://www.gnu.org/licenses/>.
*/
package bisq.core.dao;
import bisq.core.dao.governance.asset.AssetService;
import bisq.core.dao.governance.ballot.BallotListService;
import bisq.core.dao.governance.blindvote.BlindVoteListService;
import bisq.core.dao.governance.blindvote.MyBlindVoteListService;
import bisq.core.dao.governance.bond.reputation.BondedReputationRepository;
import bisq.core.dao.governance.bond.reputation.MyBondedReputationRepository;
import bisq.core.dao.governance.bond.reputation.MyReputationListService;
import bisq.core.dao.governance.bond.role.BondedRolesRepository;
import bisq.core.dao.governance.period.CycleService;
import bisq.core.dao.governance.proofofburn.ProofOfBurnService;
import bisq.core.dao.governance.proposal.ProposalService;
import bisq.core.dao.governance.voteresult.MissingDataRequestService;
import bisq.core.dao.governance.voteresult.VoteResultService;
import bisq.core.dao.governance.votereveal.VoteRevealService;
import bisq.core.dao.node.BsqNode;
import bisq.core.dao.node.BsqNodeProvider;
import bisq.core.dao.node.explorer.ExportJsonFilesService;
import bisq.core.dao.state.DaoStateService;
import bisq.core.dao.state.monitoring.DaoStateMonitoringService;
import com.google.inject.Inject;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
/**
* High level entry point for Dao domain.
* We initialize all main service classes here to be sure they are started.
*/
public class DaoSetup {
private final BsqNode bsqNode;
private final List<DaoSetupService> daoSetupServices = new ArrayList<>();
@Inject
public DaoSetup(BsqNodeProvider bsqNodeProvider,
DaoStateService daoStateService,
CycleService cycleService,
BallotListService ballotListService,
ProposalService proposalService,
BlindVoteListService blindVoteListService,
MyBlindVoteListService myBlindVoteListService,
VoteRevealService voteRevealService,
VoteResultService voteResultService,
MissingDataRequestService missingDataRequestService,
BondedReputationRepository bondedReputationRepository,
BondedRolesRepository bondedRolesRepository,
MyReputationListService myReputationListService,
MyBondedReputationRepository myBondedReputationRepository,
AssetService assetService,
ProofOfBurnService proofOfBurnService,
DaoFacade daoFacade,
ExportJsonFilesService exportJsonFilesService,
DaoKillSwitch daoKillSwitch,
DaoStateMonitoringService daoStateMonitoringService) {
bsqNode = bsqNodeProvider.getBsqNode();
// We need to take care of order of execution.
daoSetupServices.add(daoStateService);
daoSetupServices.add(cycleService);
daoSetupServices.add(ballotListService);
daoSetupServices.add(proposalService);
daoSetupServices.add(blindVoteListService);
daoSetupServices.add(myBlindVoteListService);
daoSetupServices.add(voteRevealService);
daoSetupServices.add(voteResultService);
daoSetupServices.add(missingDataRequestService);
daoSetupServices.add(bondedReputationRepository);
daoSetupServices.add(bondedRolesRepository);
daoSetupServices.add(myReputationListService);
daoSetupServices.add(myBondedReputationRepository);
daoSetupServices.add(assetService);
daoSetupServices.add(proofOfBurnService);
daoSetupServices.add(daoFacade);
daoSetupServices.add(exportJsonFilesService);
daoSetupServices.add(daoKillSwitch);
daoSetupServices.add(daoStateMonitoringService);
daoSetupServices.add(bsqNodeProvider.getBsqNode());
}
public void onAllServicesInitialized(Consumer<String> errorMessageHandler,
Consumer<String> warnMessageHandler) {
bsqNode.setErrorMessageHandler(errorMessageHandler);
bsqNode.setWarnMessageHandler(warnMessageHandler);
// We add first all listeners at all services and then call the start methods.
// Some services are listening on others so we need to make sure that the
// listeners are set before we call start as that might trigger state change
// which triggers listeners.
daoSetupServices.forEach(DaoSetupService::addListeners);
daoSetupServices.forEach(DaoSetupService::start);
}
public void shutDown() {
bsqNode.shutDown();
}
}