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
5 changed files with 641 additions and 595 deletions

View File

@@ -1965,6 +1965,7 @@ func getInfo(ctx *cli.Context) error {
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
}