51 lines
1.7 KiB
Go
51 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/hex"
|
|
|
|
"github.com/lightningnetwork/lnd/lnrpc/wtclientrpc"
|
|
)
|
|
|
|
// TowerSession encompasses information about a tower session.
|
|
type TowerSession struct {
|
|
NumBackups uint32 `json:"num_backups"`
|
|
NumPendingBackups uint32 `json:"num_pending_backups"`
|
|
MaxBackups uint32 `json:"max_backups"`
|
|
SweepSatPerByte uint32 `json:"sweep_sat_per_byte"`
|
|
}
|
|
|
|
// NewTowerSessionsFromProto converts a set of tower sessions from their RPC
|
|
// type to a CLI-friendly type.
|
|
func NewTowerSessionsFromProto(sessions []*wtclientrpc.TowerSession) []*TowerSession {
|
|
towerSessions := make([]*TowerSession, 0, len(sessions))
|
|
for _, session := range sessions {
|
|
towerSessions = append(towerSessions, &TowerSession{
|
|
NumBackups: session.NumBackups,
|
|
NumPendingBackups: session.NumPendingBackups,
|
|
MaxBackups: session.MaxBackups,
|
|
SweepSatPerByte: session.SweepSatPerByte,
|
|
})
|
|
}
|
|
return towerSessions
|
|
}
|
|
|
|
// Tower encompasses information about a registered watchtower.
|
|
type Tower struct {
|
|
PubKey string `json:"pubkey"`
|
|
Addresses []string `json:"addresses"`
|
|
ActiveSessionCandidate bool `json:"active_session_candidate"`
|
|
NumSessions uint32 `json:"num_sessions"`
|
|
Sessions []*TowerSession `json:"sessions"`
|
|
}
|
|
|
|
// NewTowerFromProto converts a tower from its RPC type to a CLI-friendly type.
|
|
func NewTowerFromProto(tower *wtclientrpc.Tower) *Tower {
|
|
return &Tower{
|
|
PubKey: hex.EncodeToString(tower.Pubkey),
|
|
Addresses: tower.Addresses,
|
|
ActiveSessionCandidate: tower.ActiveSessionCandidate,
|
|
NumSessions: tower.NumSessions,
|
|
Sessions: NewTowerSessionsFromProto(tower.Sessions),
|
|
}
|
|
}
|