This commit contains most of the changes suggested by @chimp1984 in
his api-suggestions branch. See
961703ecea
A new 'registerdisputeagent' method was also added to MainCli, finishing
the work to support registration of mediators and refund agents on
arbitration daemons running in regtest mode. This method cannot be
used to register dispute agents on mainnet; users will see an error
msg if they try.
This change adds a new StatusCheck class, for use by Core*Service
instances needing to verify the server is ready to perform trading
related functions.
Currently implements one method, verifyCanTrade(), that throws an
IllegalStateException with a CLI friendly error message if any of
the following checks fail:
- the p2p network is bootstrapped
- the block chain sync is complete
- the minimum # of peers are connected
- the wallet is available
- the wallet balance is available (not null)
* If Tor *.onion hostname, use HTTP with Tor proxy
* If 127.0.0.1 or localhost, use HTTP without Tor proxy
* If LAN address or *.local FQDN, use HTTP without Tor proxy
* If any other FQDN hostname, use HTTPS with Tor proxy
The p2pNetworkAndWalletReady MonadicBinding might be removed from GC
if its a local variable. I observed that in BisqSetup with a similar
setup. It might be an implementation weakness in MonadicBinding
(usage of weak references?). A tester reported that he does not see any
result, which might be cause that the service never gets the
onP2pNetworkAndWalletReady triggered if the MonadicBinding is not there
anymore.
By removing the listener we need at shutdown we need it anyway as class
field (so codacy does not complain anymore). As well added a check if
all is already complete to skip the MonadicBinding at all
(not expected case in onAllServicesInitialized).
- Make entrySet final
- Avoind unneeded wrapping
- Remove visibility of entrySet
- Add getAddressEntriesAsListImmutable method. This is the only access for the hashSet
so we ensure it cannot be changed from outside.
- Remove stream() method
- Remove unused return types
- Improve some stream structures
- Renaming, improve comments
In dev testing I got the case of duplicated address entries and thus
incorrect balance. I could not reproduce it later but looking in the
AddressEntry code it was unsafe using the add operation on list without
a contains check. Better instead to use a HashSet and avoid possibility
of duplicated entries by the chosen data structure.
Note that the protobuf representation is still a list and get converted
to a HashSet.