mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 09:53:54 +01:00
c1ad9cc60f
This commit takes another 10 message types and refactors their Encode method to use specific writers. The following commit will refactor the rest.
69 lines
2.0 KiB
Go
69 lines
2.0 KiB
Go
package lnwire
|
|
|
|
import (
|
|
"bytes"
|
|
"io"
|
|
)
|
|
|
|
// Shutdown is sent by either side in order to initiate the cooperative closure
|
|
// of a channel. This message is sparse as both sides implicitly have the
|
|
// information necessary to construct a transaction that will send the settled
|
|
// funds of both parties to the final delivery addresses negotiated during the
|
|
// funding workflow.
|
|
type Shutdown struct {
|
|
// ChannelID serves to identify which channel is to be closed.
|
|
ChannelID ChannelID
|
|
|
|
// Address is the script to which the channel funds will be paid.
|
|
Address DeliveryAddress
|
|
|
|
// ExtraData is the set of data that was appended to this message to
|
|
// fill out the full maximum transport message size. These fields can
|
|
// be used to specify optional data such as custom TLV fields.
|
|
ExtraData ExtraOpaqueData
|
|
}
|
|
|
|
// NewShutdown creates a new Shutdown message.
|
|
func NewShutdown(cid ChannelID, addr DeliveryAddress) *Shutdown {
|
|
return &Shutdown{
|
|
ChannelID: cid,
|
|
Address: addr,
|
|
}
|
|
}
|
|
|
|
// A compile-time check to ensure Shutdown implements the lnwire.Message
|
|
// interface.
|
|
var _ Message = (*Shutdown)(nil)
|
|
|
|
// Decode deserializes a serialized Shutdown stored in the passed io.Reader
|
|
// observing the specified protocol version.
|
|
//
|
|
// This is part of the lnwire.Message interface.
|
|
func (s *Shutdown) Decode(r io.Reader, pver uint32) error {
|
|
return ReadElements(r, &s.ChannelID, &s.Address, &s.ExtraData)
|
|
}
|
|
|
|
// Encode serializes the target Shutdown into the passed io.Writer observing
|
|
// the protocol version specified.
|
|
//
|
|
// This is part of the lnwire.Message interface.
|
|
func (s *Shutdown) Encode(w *bytes.Buffer, pver uint32) error {
|
|
if err := WriteChannelID(w, s.ChannelID); err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := WriteDeliveryAddress(w, s.Address); err != nil {
|
|
return err
|
|
}
|
|
|
|
return WriteBytes(w, s.ExtraData)
|
|
}
|
|
|
|
// MsgType returns the integer uniquely identifying this message type on the
|
|
// wire.
|
|
//
|
|
// This is part of the lnwire.Message interface.
|
|
func (s *Shutdown) MsgType() MessageType {
|
|
return MsgShutdown
|
|
}
|