|
47 | 47 | import haveno.core.support.dispute.arbitration.arbitrator.Arbitrator;
|
48 | 48 | import haveno.core.support.dispute.arbitration.arbitrator.ArbitratorManager;
|
49 | 49 | import haveno.core.support.dispute.mediation.mediator.MediatorManager;
|
| 50 | +import haveno.core.support.dispute.messages.DisputeClosedMessage; |
| 51 | +import haveno.core.support.dispute.messages.DisputeOpenedMessage; |
50 | 52 | import haveno.core.trade.Trade.DisputeState;
|
51 | 53 | import haveno.core.trade.Trade.Phase;
|
52 | 54 | import haveno.core.trade.failed.FailedTradesManager;
|
53 | 55 | import haveno.core.trade.handlers.TradeResultHandler;
|
54 | 56 | import haveno.core.trade.messages.DepositRequest;
|
55 | 57 | import haveno.core.trade.messages.DepositResponse;
|
| 58 | +import haveno.core.trade.messages.DepositsConfirmedMessage; |
56 | 59 | import haveno.core.trade.messages.InitMultisigRequest;
|
57 | 60 | import haveno.core.trade.messages.InitTradeRequest;
|
| 61 | +import haveno.core.trade.messages.PaymentReceivedMessage; |
| 62 | +import haveno.core.trade.messages.PaymentSentMessage; |
58 | 63 | import haveno.core.trade.messages.SignContractRequest;
|
59 | 64 | import haveno.core.trade.messages.SignContractResponse;
|
60 | 65 | import haveno.core.trade.messages.TradeMessage;
|
|
80 | 85 | import haveno.network.p2p.NodeAddress;
|
81 | 86 | import haveno.network.p2p.P2PService;
|
82 | 87 | import haveno.network.p2p.SendMailboxMessageListener;
|
| 88 | +import haveno.network.p2p.mailbox.MailboxMessage; |
| 89 | +import haveno.network.p2p.mailbox.MailboxMessageService; |
83 | 90 | import haveno.network.p2p.network.TorNetworkNode;
|
84 | 91 | import javafx.beans.property.BooleanProperty;
|
85 | 92 | import javafx.beans.property.LongProperty;
|
|
100 | 107 | import javax.inject.Inject;
|
101 | 108 | import java.math.BigInteger;
|
102 | 109 | import java.util.ArrayList;
|
| 110 | +import java.util.Arrays; |
| 111 | +import java.util.Comparator; |
103 | 112 | import java.util.Date;
|
104 | 113 | import java.util.HashMap;
|
105 | 114 | import java.util.HashSet;
|
@@ -153,6 +162,31 @@ public class TradeManager implements PersistedDataHost, DecryptedDirectMessageLi
|
153 | 162 | private final LongProperty numPendingTrades = new SimpleLongProperty();
|
154 | 163 | private final ReferralIdService referralIdService;
|
155 | 164 |
|
| 165 | + // set comparator for processing mailbox messages |
| 166 | + static { |
| 167 | + MailboxMessageService.setMailboxMessageComparator(new MailboxMessageComparator()); |
| 168 | + } |
| 169 | + |
| 170 | + /** |
| 171 | + * Sort mailbox messages for processing. |
| 172 | + */ |
| 173 | + public static class MailboxMessageComparator implements Comparator<MailboxMessage> { |
| 174 | + private static List<Class<? extends MailboxMessage>> messageOrder = Arrays.asList( |
| 175 | + AckMessage.class, |
| 176 | + DepositsConfirmedMessage.class, |
| 177 | + PaymentSentMessage.class, |
| 178 | + PaymentReceivedMessage.class, |
| 179 | + DisputeOpenedMessage.class, |
| 180 | + DisputeClosedMessage.class); |
| 181 | + |
| 182 | + @Override |
| 183 | + public int compare(MailboxMessage m1, MailboxMessage m2) { |
| 184 | + int idx1 = messageOrder.indexOf(m1.getClass()); |
| 185 | + int idx2 = messageOrder.indexOf(m2.getClass()); |
| 186 | + return idx1 - idx2; |
| 187 | + } |
| 188 | + } |
| 189 | + |
156 | 190 |
|
157 | 191 | ///////////////////////////////////////////////////////////////////////////////////////////
|
158 | 192 | // Constructor
|
|
0 commit comments