mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-03-04 01:36:24 +01:00
rpcserver: implement the ListChannels RPC
This commit is contained in:
parent
68c4f0432e
commit
7a6905d697
1 changed files with 42 additions and 14 deletions
56
rpcserver.go
56
rpcserver.go
|
@ -354,20 +354,6 @@ func (r *rpcServer) ListPeers(ctx context.Context,
|
||||||
BytesSent: atomic.LoadUint64(&serverPeer.bytesSent),
|
BytesSent: atomic.LoadUint64(&serverPeer.bytesSent),
|
||||||
}
|
}
|
||||||
|
|
||||||
chanSnapshots := serverPeer.ChannelSnapshots()
|
|
||||||
peer.Channels = make([]*lnrpc.ActiveChannel, 0, len(chanSnapshots))
|
|
||||||
for _, chanSnapshot := range chanSnapshots {
|
|
||||||
channel := &lnrpc.ActiveChannel{
|
|
||||||
RemoteId: lnID,
|
|
||||||
ChannelPoint: chanSnapshot.ChannelPoint.String(),
|
|
||||||
Capacity: int64(chanSnapshot.Capacity),
|
|
||||||
LocalBalance: int64(chanSnapshot.LocalBalance),
|
|
||||||
RemoteBalance: int64(chanSnapshot.RemoteBalance),
|
|
||||||
NumUpdates: chanSnapshot.NumUpdates,
|
|
||||||
}
|
|
||||||
peer.Channels = append(peer.Channels, channel)
|
|
||||||
}
|
|
||||||
|
|
||||||
resp.Peers = append(resp.Peers, peer)
|
resp.Peers = append(resp.Peers, peer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -446,6 +432,48 @@ func (r *rpcServer) PendingChannels(ctx context.Context,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ListChannels returns a description of all direct active, open channels the
|
||||||
|
// node knows of.
|
||||||
|
// TODO(roasbeef): read all active channels from the DB?
|
||||||
|
// * add 'online' toggle bit
|
||||||
|
func (r *rpcServer) ListChannels(ctx context.Context,
|
||||||
|
in *lnrpc.ListChannelsRequest) (*lnrpc.ListChannelsResponse, error) {
|
||||||
|
|
||||||
|
resp := &lnrpc.ListChannelsResponse{}
|
||||||
|
peers := r.server.Peers()
|
||||||
|
|
||||||
|
for _, peer := range peers {
|
||||||
|
lnID := hex.EncodeToString(peer.identityPub.SerializeCompressed())
|
||||||
|
chanSnapshots := peer.ChannelSnapshots()
|
||||||
|
|
||||||
|
for _, chanSnapshot := range chanSnapshots {
|
||||||
|
channel := &lnrpc.ActiveChannel{
|
||||||
|
RemotePubkey: lnID,
|
||||||
|
ChannelPoint: chanSnapshot.ChannelPoint.String(),
|
||||||
|
Capacity: int64(chanSnapshot.Capacity),
|
||||||
|
LocalBalance: int64(chanSnapshot.LocalBalance),
|
||||||
|
RemoteBalance: int64(chanSnapshot.RemoteBalance),
|
||||||
|
NumUpdates: chanSnapshot.NumUpdates,
|
||||||
|
PendingHtlcs: make([]*lnrpc.HTLC, len(chanSnapshot.Htlcs)),
|
||||||
|
}
|
||||||
|
for i, htlc := range chanSnapshot.Htlcs {
|
||||||
|
channel.PendingHtlcs[i] = &lnrpc.HTLC{
|
||||||
|
Incoming: htlc.Incoming,
|
||||||
|
Amount: int64(htlc.Amt),
|
||||||
|
HashLock: htlc.RHash[:],
|
||||||
|
ExpirationHeight: htlc.RefundTimeout,
|
||||||
|
RevocationDelay: htlc.RevocationDelay,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resp.Channels = append(resp.Channels, channel)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
// SendPayment dispatches a bi-directional streaming RPC for sending payments
|
// SendPayment dispatches a bi-directional streaming RPC for sending payments
|
||||||
// through the Lightning Network. A single RPC invocation creates a persistent
|
// through the Lightning Network. A single RPC invocation creates a persistent
|
||||||
// bi-directional stream allowing clients to rapidly send payments through the
|
// bi-directional stream allowing clients to rapidly send payments through the
|
||||||
|
|
Loading…
Add table
Reference in a new issue