From f3d2aeb00a974ea44a3e83ebfddfd2f82090ce00 Mon Sep 17 00:00:00 2001 From: Elle Mouton Date: Wed, 10 Aug 2022 11:18:38 +0200 Subject: [PATCH] interface: create a new Litd Client interface --- litrpc/interface.go | 63 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 litrpc/interface.go diff --git a/litrpc/interface.go b/litrpc/interface.go new file mode 100644 index 00000000..e4391ddf --- /dev/null +++ b/litrpc/interface.go @@ -0,0 +1,63 @@ +package litrpc + +import ( + "github.com/lightninglabs/faraday/frdrpc" + "github.com/lightninglabs/loop/looprpc" + "github.com/lightninglabs/pool/poolrpc" + "github.com/lightningnetwork/lnd/lnrpc" + "google.golang.org/grpc" +) + +// LitdClient is an interface that can be used to access all the subservers +// of Litd. +type LitdClient interface { + // Lnd returns an lnrpc.LightingClient implementation. + Lnd() lnrpc.LightningClient + + // Loop returns a looprpc.SwapClientClient implementation. + Loop() looprpc.SwapClientClient + + // Pool returns a poolrpc.TraderClient implementation. + Pool() poolrpc.TraderClient + + // Faraday returns a frdrpc.FaradayServerClient implementation. + Faraday() frdrpc.FaradayServerClient +} + +// client is an implementation of the LitdClient. +type client struct { + lnd lnrpc.LightningClient + loop looprpc.SwapClientClient + pool poolrpc.TraderClient + faraday frdrpc.FaradayServerClient +} + +// Lnd returns an lnrpc.LightingClient implementation. +func (c *client) Lnd() lnrpc.LightningClient { + return c.lnd +} + +// Loop returns a looprpc.SwapClientClient implementation. +func (c *client) Loop() looprpc.SwapClientClient { + return c.loop +} + +// Pool returns a poolrpc.TraderClient implementation. +func (c *client) Pool() poolrpc.TraderClient { + return c.pool +} + +// Faraday returns a frdrpc.FaradayServerClient implementation. +func (c *client) Faraday() frdrpc.FaradayServerClient { + return c.faraday +} + +// NewLitdClient constructs a new LitdClient from the passed grpc ClientConn. +func NewLitdClient(cc grpc.ClientConnInterface) LitdClient { + return &client{ + lnd: lnrpc.NewLightningClient(cc), + loop: looprpc.NewSwapClientClient(cc), + pool: poolrpc.NewTraderClient(cc), + faraday: frdrpc.NewFaradayServerClient(cc), + } +}