lnrpc+lncli: add feature bits to GetInfo

This commit is contained in:
carla 2019-12-17 21:58:28 +02:00
parent 496434259a
commit 6eab2a06dd
No known key found for this signature in database
GPG Key ID: 4CA7FE54A6213C91
5 changed files with 641 additions and 595 deletions

View File

@ -1949,22 +1949,23 @@ func getInfo(ctx *cli.Context) error {
// We print a struct that mimics the proto definition of GetInfoResponse
// but has a better ordering for the same list of fields.
printJSON(struct {
Version string `json:"version"`
IdentityPubkey string `json:"identity_pubkey"`
Alias string `json:"alias"`
Color string `json:"color"`
NumPendingChannels uint32 `json:"num_pending_channels"`
NumActiveChannels uint32 `json:"num_active_channels"`
NumInactiveChannels uint32 `json:"num_inactive_channels"`
NumPeers uint32 `json:"num_peers"`
BlockHeight uint32 `json:"block_height"`
BlockHash string `json:"block_hash"`
BestHeaderTimestamp int64 `json:"best_header_timestamp"`
SyncedToChain bool `json:"synced_to_chain"`
SyncedToGraph bool `json:"synced_to_graph"`
Testnet bool `json:"testnet"`
Chains []chain `json:"chains"`
Uris []string `json:"uris"`
Version string `json:"version"`
IdentityPubkey string `json:"identity_pubkey"`
Alias string `json:"alias"`
Color string `json:"color"`
NumPendingChannels uint32 `json:"num_pending_channels"`
NumActiveChannels uint32 `json:"num_active_channels"`
NumInactiveChannels uint32 `json:"num_inactive_channels"`
NumPeers uint32 `json:"num_peers"`
BlockHeight uint32 `json:"block_height"`
BlockHash string `json:"block_hash"`
BestHeaderTimestamp int64 `json:"best_header_timestamp"`
SyncedToChain bool `json:"synced_to_chain"`
SyncedToGraph bool `json:"synced_to_graph"`
Testnet bool `json:"testnet"`
Chains []chain `json:"chains"`
Uris []string `json:"uris"`
Features map[uint32]*lnrpc.Feature `json:"features"`
}{
Version: resp.Version,
IdentityPubkey: resp.IdentityPubkey,
@ -1982,6 +1983,7 @@ func getInfo(ctx *cli.Context) error {
Testnet: resp.Testnet,
Chains: chains,
Uris: resp.Uris,
Features: resp.Features,
})
return nil
}

File diff suppressed because it is too large Load Diff

View File

@ -1539,6 +1539,12 @@ message GetInfoResponse {
// Whether we consider ourselves synced with the public channel graph.
bool synced_to_graph = 18 [json_name = "synced_to_graph"];
/*
Features that our node has advertised in our init message, node
announcements and invoices.
*/
map<uint32, Feature> features = 19 [json_name = "features"];
}
message Chain {

View File

@ -2504,6 +2504,13 @@
"type": "boolean",
"format": "boolean",
"description": "Whether we consider ourselves synced with the public channel graph."
},
"features": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/lnrpcFeature"
},
"description": "Features that our node has advertised in our init message, node\nannouncements and invoices."
}
}
},

View File

@ -2215,6 +2215,22 @@ func (r *rpcServer) GetInfo(ctx context.Context,
isGraphSynced := r.server.authGossiper.SyncManager().IsGraphSynced()
features := make(map[uint32]*lnrpc.Feature)
sets := r.server.featureMgr.ListSets()
for _, set := range sets {
// Get the a list of lnrpc features for each set we support.
featureVector := r.server.featureMgr.Get(set)
rpcFeatures := invoicesrpc.CreateRPCFeatures(featureVector)
// Add the features to our map of features, allowing over writing of
// existing values because features in different sets with the same bit
// are duplicated across sets.
for bit, feature := range rpcFeatures {
features[bit] = feature
}
}
// TODO(roasbeef): add synced height n stuff
return &lnrpc.GetInfoResponse{
IdentityPubkey: encodedIDPub,
@ -2233,6 +2249,7 @@ func (r *rpcServer) GetInfo(ctx context.Context,
BestHeaderTimestamp: int64(bestHeaderTimestamp),
Version: build.Version(),
SyncedToGraph: isGraphSynced,
Features: features,
}, nil
}