From f4b403679b8fdf673fddd8cd1fe76ca9215a98ba Mon Sep 17 00:00:00 2001 From: Olaoluwa Osuntokun Date: Thu, 2 Feb 2017 17:05:25 -0800 Subject: [PATCH] lnwallet: remove BlockChainIO as a dependency to LightningChannel This commit removes the BlockChainIO interface as a dependency to the LightningChannel struct as the interface is no longer used within the operation of the LightningChannel. --- lnwallet/channel.go | 7 ++----- lnwallet/channel_test.go | 8 ++++---- lnwallet/wallet.go | 4 ++-- peer.go | 11 +++++++---- rpcserver.go | 4 ++-- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/lnwallet/channel.go b/lnwallet/channel.go index a03a2d48..b56af1a1 100644 --- a/lnwallet/channel.go +++ b/lnwallet/channel.go @@ -5,6 +5,7 @@ import ( "container/list" "fmt" "sync" + "sync/atomic" "github.com/btcsuite/fastsha256" "github.com/davecgh/go-spew/spew" @@ -344,8 +345,6 @@ type LightningChannel struct { signer Signer signDesc *SignDescriptor - bio BlockChainIO - channelEvents chainntnfs.ChainNotifier sync.RWMutex @@ -454,13 +453,11 @@ type LightningChannel struct { // settled channel state. Throughout state transitions, then channel will // automatically persist pertinent state to the database in an efficient // manner. -func NewLightningChannel(signer Signer, bio BlockChainIO, - events chainntnfs.ChainNotifier, +func NewLightningChannel(signer Signer, events chainntnfs.ChainNotifier, state *channeldb.OpenChannel) (*LightningChannel, error) { lc := &LightningChannel{ signer: signer, - bio: bio, channelEvents: events, currentHeight: state.NumUpdates, remoteCommitChain: newCommitmentChain(state.NumUpdates), diff --git a/lnwallet/channel_test.go b/lnwallet/channel_test.go index 01e07e79..f141f556 100644 --- a/lnwallet/channel_test.go +++ b/lnwallet/channel_test.go @@ -308,11 +308,11 @@ func createTestChannels(revocationWindow int) (*LightningChannel, *LightningChan notifier := &mockNotfier{} - channelAlice, err := NewLightningChannel(aliceSigner, nil, notifier, aliceChannelState) + channelAlice, err := NewLightningChannel(aliceSigner, notifier, aliceChannelState) if err != nil { return nil, nil, nil, err } - channelBob, err := NewLightningChannel(bobSigner, nil, notifier, bobChannelState) + channelBob, err := NewLightningChannel(bobSigner, notifier, bobChannelState) if err != nil { return nil, nil, nil, err } @@ -1052,11 +1052,11 @@ func TestStateUpdatePersistence(t *testing.T) { t.Fatalf("unable to fetch channel: %v", err) } notifier := aliceChannel.channelEvents - aliceChannelNew, err := NewLightningChannel(aliceChannel.signer, nil, notifier, aliceChannels[0]) + aliceChannelNew, err := NewLightningChannel(aliceChannel.signer, notifier, aliceChannels[0]) if err != nil { t.Fatalf("unable to create new channel: %v", err) } - bobChannelNew, err := NewLightningChannel(bobChannel.signer, nil, notifier, bobChannels[0]) + bobChannelNew, err := NewLightningChannel(bobChannel.signer, notifier, bobChannels[0]) if err != nil { t.Fatalf("unable to create new channel: %v", err) } diff --git a/lnwallet/wallet.go b/lnwallet/wallet.go index 320af1f6..c4123c9a 100644 --- a/lnwallet/wallet.go +++ b/lnwallet/wallet.go @@ -1230,7 +1230,7 @@ func (l *LightningWallet) handleChannelOpen(req *channelOpenMsg) { // Finally, create and officially open the payment channel! // TODO(roasbeef): CreationTime once tx is 'open' - channel, err := NewLightningChannel(l.Signer, l.ChainIO, l.chainNotifier, + channel, err := NewLightningChannel(l.Signer, l.chainNotifier, res.partialState) if err != nil { req.err <- err @@ -1285,7 +1285,7 @@ out: // Finally, create and officially open the payment channel! // TODO(roasbeef): CreationTime once tx is 'open' - channel, err := NewLightningChannel(l.Signer, l.ChainIO, l.chainNotifier, + channel, err := NewLightningChannel(l.Signer, l.chainNotifier, res.partialState) if err != nil { res.chanOpenErr <- err diff --git a/peer.go b/peer.go index 1139e150..6bbf80b8 100644 --- a/peer.go +++ b/peer.go @@ -226,7 +226,7 @@ func (p *peer) loadActiveChannels(chans []*channeldb.OpenChannel) error { for _, dbChan := range chans { chanID := dbChan.ChanID lnChan, err := lnwallet.NewLightningChannel(p.server.lnwallet.Signer, - p.server.bio, p.server.chainNotifier, dbChan) + p.server.chainNotifier, dbChan) if err != nil { return err } @@ -820,7 +820,7 @@ func (p *peer) handleLocalClose(req *closeLinkReq) { switch req.CloseType { // A type of CloseRegular indicates that the user has opted to close // out this channel on-chian, so we execute the cooperative channel - // closre workflow. + // closure workflow. case CloseRegular: closingTxid, err = p.executeCooperativeClose(channel) peerLog.Infof("Attempting cooperative close of "+ @@ -828,7 +828,7 @@ func (p *peer) handleLocalClose(req *closeLinkReq) { closingTxid) // A type of CloseBreach indicates that the counterparty has breached - // the cahnnel therefore we need to clean up our local state. + // the channel therefore we need to clean up our local state. case CloseBreach: peerLog.Infof("ChannelPoint(%v) has been breached, wiping "+ "channel", req.chanPoint) @@ -1116,7 +1116,8 @@ func (p *peer) htlcManager(channel *lnwallet.LightningChannel, // TODO(roasbeef): check to see if able to settle any currently pending // HTLCs - // * also need signals when new invoices are added by the invoiceRegistry + // * also need signals when new invoices are added by the + // invoiceRegistry batchTimer := time.Tick(10 * time.Millisecond) out: @@ -1134,6 +1135,8 @@ out: break out case <-channel.ForceCloseSignal: + // TODO(roasbeef): path never taken now that server + // force closes's directly? peerLog.Warnf("ChannelPoint(%v) has been force "+ "closed, disconnecting from peerID(%x)", state.chanPoint, p.id) diff --git a/rpcserver.go b/rpcserver.go index 3749a98c..d3497397 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -563,8 +563,8 @@ func (r *rpcServer) fetchActiveChannel(chanPoint wire.OutPoint) (*lnwallet.Light // Otherwise, we create a fully populated channel state machine which // uses the db channel as backing storage. - return lnwallet.NewLightningChannel(r.server.lnwallet.Signer, - r.server.bio, r.server.chainNotifier, dbChan) + return lnwallet.NewLightningChannel(r.server.lnwallet.Signer, nil, + dbChan) } // forceCloseChan executes a unilateral close of the target channel by