lnd.xprv/lnrpc/signrpc
Olaoluwa Osuntokun 4002caec69
config+rpc: create new generalized dynamic sub rpc server config framework
In this commit, we add the glue infrastructure to make the sub RPC
server system work properly. Our high level goal is the following: using
only the lnrpc package (with no visibility into the sub RPC servers),
the RPC server is able to find, create, run, and manage the entire set
of present and future sub RPC servers. In order to achieve this, we use
the reflect package and build tags heavily to permit a loosely coupled
configuration parsing system for the sub RPC servers.

We start with a new `subRpcServerConfigs` struct which is _always_
present.  This struct has its own group, and will house a series of
sub-configs, one for each sub RPC server. Each sub-config is actually
gated behind a build flag, and can be used to allow users on the command
line or in the config to specify arguments related to the sub-server. If
the config isn't present, then we don't attempt to parse it at all, if
it is, then that means the RPC server has been registered, and we should
parse the contents of its config.

The `subRpcServerConfigs` struct has two main methods:
`PopulateDependancies` and `FetchConfig`. The `PopulateDependancies` is
used to dynamically locate and set the config fields for each new
sub-server. As the config may not actually have any fields (if the build
flag is off), we use the reflect pacakge to determine if things are
compiled in or not, then if so, we dynamically set each of the config
parameters. The `PopulateDependancies` method implements the
`lnrpc.SubServerConfigDispatcher` interface. Our goal is to allow sub
servers to look up their actual config in this main config struct. We
achieve this by using reflect to look up the target field _as if it were
a key in a map_. If the field is found, then we check if it has any
actual attributes (it won't if the build flag is off), if it is, then we
return it as we expect it to be populated already.
2018-11-28 20:57:05 -08:00
..
config_active.go lnrpc/signrpc: add lnrpc.SubServerDriver for signrpc 2018-11-28 20:57:03 -08:00
config_default.go lnrpc/signrpc: add lnrpc.SubServerDriver for signrpc 2018-11-28 20:57:03 -08:00
driver.go lnrpc/signrpc: add lnrpc.SubServerDriver for signrpc 2018-11-28 20:57:03 -08:00
gen_protos.sh lnrpc/signrpc: add new gen_protos.sh to generate minimal protos 2018-11-28 20:56:59 -08:00
log.go lnrpc/signrpc: implement new SignerServer sub RPC server 2018-11-28 20:57:01 -08:00
signer_server.go config+rpc: create new generalized dynamic sub rpc server config framework 2018-11-28 20:57:05 -08:00
signer.pb.go lnrpc/signrpc: add and generate new set of protos for Signer service 2018-11-28 20:56:58 -08:00
signer.proto lnrpc/signrpc: add and generate new set of protos for Signer service 2018-11-28 20:56:58 -08:00