mirror of
https://github.com/aljazceru/lnd-manageJ.git
synced 2026-01-24 08:24:20 +01:00
get force-closing channels
This commit is contained in:
@@ -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");
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user