github.com/decred/dcrlnd@v0.7.6/lnrpc/invoicesrpc/driver.go (about)

     1  //go:build !no_invoicesrpc
     2  // +build !no_invoicesrpc
     3  
     4  package invoicesrpc
     5  
     6  import (
     7  	"fmt"
     8  
     9  	"github.com/decred/dcrlnd/lnrpc"
    10  )
    11  
    12  // createNewSubServer is a helper method that will create the new sub server
    13  // given the main config dispatcher method. If we're unable to find the config
    14  // that is meant for us in the config dispatcher, then we'll exit with an
    15  // error.
    16  func createNewSubServer(configRegistry lnrpc.SubServerConfigDispatcher) (
    17  	*Server, lnrpc.MacaroonPerms, error) {
    18  
    19  	// We'll attempt to look up the config that we expect, according to our
    20  	// subServerName name. If we can't find this, then we'll exit with an
    21  	// error, as we're unable to properly initialize ourselves without this
    22  	// config.
    23  	subServerConf, ok := configRegistry.FetchConfig(subServerName)
    24  	if !ok {
    25  		return nil, nil, fmt.Errorf("unable to find config for "+
    26  			"subserver type %s", subServerName)
    27  	}
    28  
    29  	// Now that we've found an object mapping to our service name, we'll
    30  	// ensure that it's the type we need.
    31  	config, ok := subServerConf.(*Config)
    32  	if !ok {
    33  		return nil, nil, fmt.Errorf("wrong type of config for "+
    34  			"subserver %s, expected %T got %T", subServerName,
    35  			&Config{}, subServerConf)
    36  	}
    37  
    38  	return New(config)
    39  }
    40  
    41  func init() {
    42  	subServer := &lnrpc.SubServerDriver{
    43  		SubServerName: subServerName,
    44  		NewGrpcHandler: func() lnrpc.GrpcHandler {
    45  			return &ServerShell{}
    46  		},
    47  	}
    48  
    49  	// If the build tag is active, then we'll register ourselves as a
    50  	// sub-RPC server within the global lnrpc package namespace.
    51  	if err := lnrpc.RegisterSubServer(subServer); err != nil {
    52  		panic(fmt.Sprintf("failed to register sub server driver "+
    53  			"'%s': %v", subServerName, err))
    54  	}
    55  }