get force-closing channels

This commit is contained in:
Carsten Otto
2021-11-16 19:58:23 +01:00
parent 0c892ca88e
commit 6b8614a614
14 changed files with 246 additions and 4 deletions

View File

@@ -112,6 +112,16 @@ public class LegacyController {
.collect(Collectors.joining(NEWLINE));
}
@GetMapping("/force-closing-channels")
public String getForceClosingChannelIds() {
mark("getForceClosingChannelIds");
return channelService.getForceClosingChannels().stream()
.map(Channel::getId)
.sorted()
.map(ChannelId::toString)
.collect(Collectors.joining(NEWLINE));
}
@GetMapping("/peer-pubkeys")
public String getPeerPubkeys() {
mark("getPeerPubkeys");

View File

@@ -5,6 +5,8 @@ import de.cotto.lndmanagej.model.ChannelIdResolver;
import de.cotto.lndmanagej.model.ChannelPoint;
import de.cotto.lndmanagej.transactions.model.Transaction;
import de.cotto.lndmanagej.transactions.service.TransactionService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.util.Optional;
@@ -12,6 +14,7 @@ import java.util.Optional;
@Component
public class ChannelIdResolverImpl implements ChannelIdResolver {
private final TransactionService transactionService;
private final Logger logger = LoggerFactory.getLogger(getClass());
public ChannelIdResolverImpl(TransactionService transactionService) {
this.transactionService = transactionService;
@@ -19,8 +22,12 @@ public class ChannelIdResolverImpl implements ChannelIdResolver {
@Override
public Optional<ChannelId> resolveFromChannelPoint(ChannelPoint channelPoint) {
return transactionService.getTransaction(channelPoint.getTransactionHash())
.map(transaction -> getChannelId(transaction, channelPoint));
String transactionHash = channelPoint.getTransactionHash();
Optional<Transaction> transactionOptional = transactionService.getTransaction(transactionHash);
if (transactionOptional.isEmpty()) {
logger.warn("Unable resolve transaction ID for {}", transactionHash);
}
return transactionOptional.map(transaction -> getChannelId(transaction, channelPoint));
}
private ChannelId getChannelId(Transaction transaction, ChannelPoint channelPoint) {

View File

@@ -4,6 +4,7 @@ import com.google.common.cache.LoadingCache;
import de.cotto.lndmanagej.caching.CacheBuilder;
import de.cotto.lndmanagej.grpc.GrpcChannels;
import de.cotto.lndmanagej.model.ClosedChannel;
import de.cotto.lndmanagej.model.ForceClosingChannel;
import de.cotto.lndmanagej.model.LocalChannel;
import de.cotto.lndmanagej.model.LocalOpenChannel;
import de.cotto.lndmanagej.model.Pubkey;
@@ -39,6 +40,10 @@ public class ChannelService {
return closedChannelsCache.getUnchecked("");
}
public Set<ForceClosingChannel> getForceClosingChannels() {
return grpcChannels.getForceClosingChannels();
}
public Set<LocalOpenChannel> getOpenChannelsWith(Pubkey peer) {
return getOpenChannels().stream()
.filter(c -> peer.equals(c.getRemotePubkey()))
@@ -47,9 +52,11 @@ public class ChannelService {
public Set<LocalChannel> getAllChannelsWith(Pubkey pubkey) {
Stream<LocalOpenChannel> openChannels = getOpenChannelsWith(pubkey).stream();
Stream<ForceClosingChannel> forceClosingChannels = getForceClosingChannels().stream()
.filter(c -> c.getRemotePubkey().equals(pubkey));
Stream<ClosedChannel> closedChannels = getClosedChannels().stream()
.filter(c -> c.getRemotePubkey().equals(pubkey));
return Stream.of(openChannels, closedChannels).flatMap(s -> s)
return Stream.of(openChannels, closedChannels, forceClosingChannels).flatMap(s -> s)
.collect(Collectors.toSet());
}