mirror of
https://github.com/ElementsProject/lightning.git
synced 2024-12-29 10:04:41 +01:00
0fc0ffc961
We build an in-memory model of what the API should look like, which will later be used to generate a variety of bindings. In this PR we will use the model to build structs corresponding to the requests and responses for the various methods. The JSON-RPC schemas serve as ground-truth, however they are missing a bit of context: methods, and the request-response matching (as well as a higher level grouping we'll call a Service). I'm tempted to create a new document that describes this behavior and we could even generate the rather repetitive JSON schemas from that document. Furthermore it'd allow us to add some required metadata such as grpc field numbering once we generate those bindings. Changelog-Added: JSON-RPC: A new `msggen` library allows easy generation of language bindings for the JSON-RPC from the JSON schemas
24 lines
716 B
Markdown
24 lines
716 B
Markdown
# MsgGen - Generating language bindings and docs from schemas and wire descriptions
|
|
|
|
MsgGen is a collection of tools that are used to parse schemas and
|
|
(eventually) protocol wire CSVs into an intermediate representation in
|
|
memory, and then generate language specific bindings and
|
|
documentation from it.
|
|
|
|
|
|
The dependency graph looks like this:
|
|
|
|
|
|
```dot
|
|
digraph {
|
|
"JSON-RPC Schemas" -> "msggen model";
|
|
"msggen model" -> "grpc proto file";
|
|
"msggen model" -> "Rust From<JsonRpc> Converters";
|
|
"grpc proto file" -> "Rust grpc bindings"
|
|
"Rust grpc bindings" -> "cln-grpc";
|
|
"Rust From<JsonRpc> Converters" -> "cln-grpc";
|
|
"msggen model" -> "Rust JSON-RPC structs";
|
|
"Rust JSON-RPC structs" -> "cln-rpc";
|
|
}
|
|
```
|