lnwire: refactor Encode to use specific writers - I

This commit takes 10 types of messages and refactors their Encode method
to use specific writers. The following commits will refactor the rest.
This commit is contained in:
yyforyongyu 2021-06-18 15:03:43 +08:00
parent f04410c546
commit 563ff7266a
No known key found for this signature in database
GPG Key ID: 9BCD95C4FF296868
10 changed files with 158 additions and 58 deletions

View File

@ -126,23 +126,63 @@ func (a *AcceptChannel) Encode(w *bytes.Buffer, pver uint32) error {
return err return err
} }
return WriteElements(w, if err := WriteBytes(w, a.PendingChannelID[:]); err != nil {
a.PendingChannelID[:], return err
a.DustLimit, }
a.MaxValueInFlight,
a.ChannelReserve, if err := WriteSatoshi(w, a.DustLimit); err != nil {
a.HtlcMinimum, return err
a.MinAcceptDepth, }
a.CsvDelay,
a.MaxAcceptedHTLCs, if err := WriteMilliSatoshi(w, a.MaxValueInFlight); err != nil {
a.FundingKey, return err
a.RevocationPoint, }
a.PaymentPoint,
a.DelayedPaymentPoint, if err := WriteSatoshi(w, a.ChannelReserve); err != nil {
a.HtlcPoint, return err
a.FirstCommitmentPoint, }
tlvRecords,
) if err := WriteMilliSatoshi(w, a.HtlcMinimum); err != nil {
return err
}
if err := WriteUint32(w, a.MinAcceptDepth); err != nil {
return err
}
if err := WriteUint16(w, a.CsvDelay); err != nil {
return err
}
if err := WriteUint16(w, a.MaxAcceptedHTLCs); err != nil {
return err
}
if err := WritePublicKey(w, a.FundingKey); err != nil {
return err
}
if err := WritePublicKey(w, a.RevocationPoint); err != nil {
return err
}
if err := WritePublicKey(w, a.PaymentPoint); err != nil {
return err
}
if err := WritePublicKey(w, a.DelayedPaymentPoint); err != nil {
return err
}
if err := WritePublicKey(w, a.HtlcPoint); err != nil {
return err
}
if err := WritePublicKey(w, a.FirstCommitmentPoint); err != nil {
return err
}
return WriteBytes(w, tlvRecords)
} }
// Decode deserializes the serialized AcceptChannel stored in the passed // Decode deserializes the serialized AcceptChannel stored in the passed

View File

@ -66,13 +66,23 @@ func (a *AnnounceSignatures) Decode(r io.Reader, pver uint32) error {
// //
// This is part of the lnwire.Message interface. // This is part of the lnwire.Message interface.
func (a *AnnounceSignatures) Encode(w *bytes.Buffer, pver uint32) error { func (a *AnnounceSignatures) Encode(w *bytes.Buffer, pver uint32) error {
return WriteElements(w, if err := WriteChannelID(w, a.ChannelID); err != nil {
a.ChannelID, return err
a.ShortChannelID, }
a.NodeSignature,
a.BitcoinSignature, if err := WriteShortChannelID(w, a.ShortChannelID); err != nil {
a.ExtraOpaqueData, return err
) }
if err := WriteSig(w, a.NodeSignature); err != nil {
return err
}
if err := WriteSig(w, a.BitcoinSignature); err != nil {
return err
}
return WriteBytes(w, a.ExtraOpaqueData)
} }
// MsgType returns the integer uniquely identifying this message type on the // MsgType returns the integer uniquely identifying this message type on the

View File

@ -65,9 +65,19 @@ func (c *ClosingSigned) Decode(r io.Reader, pver uint32) error {
// //
// This is part of the lnwire.Message interface. // This is part of the lnwire.Message interface.
func (c *ClosingSigned) Encode(w *bytes.Buffer, pver uint32) error { func (c *ClosingSigned) Encode(w *bytes.Buffer, pver uint32) error {
return WriteElements( if err := WriteChannelID(w, c.ChannelID); err != nil {
w, c.ChannelID, c.FeeSatoshis, c.Signature, c.ExtraData, return err
) }
if err := WriteSatoshi(w, c.FeeSatoshis); err != nil {
return err
}
if err := WriteSig(w, c.Signature); err != nil {
return err
}
return WriteBytes(w, c.ExtraData)
} }
// MsgType returns the integer uniquely identifying this message type on the // MsgType returns the integer uniquely identifying this message type on the

View File

@ -71,12 +71,19 @@ func (c *CommitSig) Decode(r io.Reader, pver uint32) error {
// //
// This is part of the lnwire.Message interface. // This is part of the lnwire.Message interface.
func (c *CommitSig) Encode(w *bytes.Buffer, pver uint32) error { func (c *CommitSig) Encode(w *bytes.Buffer, pver uint32) error {
return WriteElements(w, if err := WriteChannelID(w, c.ChanID); err != nil {
c.ChanID, return err
c.CommitSig, }
c.HtlcSigs,
c.ExtraData, if err := WriteSig(w, c.CommitSig); err != nil {
) return err
}
if err := WriteSigs(w, c.HtlcSigs); err != nil {
return err
}
return WriteBytes(w, c.ExtraData)
} }
// MsgType returns the integer uniquely identifying this message type on the // MsgType returns the integer uniquely identifying this message type on the

View File

@ -105,10 +105,11 @@ func (c *Error) Decode(r io.Reader, pver uint32) error {
// //
// This is part of the lnwire.Message interface. // This is part of the lnwire.Message interface.
func (c *Error) Encode(w *bytes.Buffer, pver uint32) error { func (c *Error) Encode(w *bytes.Buffer, pver uint32) error {
return WriteElements(w, if err := WriteBytes(w, c.ChanID[:]); err != nil {
c.ChanID, return err
c.Data, }
)
return WriteErrorData(w, c.Data)
} }
// MsgType returns the integer uniquely identifying an Error message on the // MsgType returns the integer uniquely identifying an Error message on the

View File

@ -42,10 +42,19 @@ var _ Message = (*FundingCreated)(nil)
// //
// This is part of the lnwire.Message interface. // This is part of the lnwire.Message interface.
func (f *FundingCreated) Encode(w *bytes.Buffer, pver uint32) error { func (f *FundingCreated) Encode(w *bytes.Buffer, pver uint32) error {
return WriteElements( if err := WriteBytes(w, f.PendingChannelID[:]); err != nil {
w, f.PendingChannelID[:], f.FundingPoint, f.CommitSig, return err
f.ExtraData, }
)
if err := WriteOutPoint(w, f.FundingPoint); err != nil {
return err
}
if err := WriteSig(w, f.CommitSig); err != nil {
return err
}
return WriteBytes(w, f.ExtraData)
} }
// Decode deserializes the serialized FundingCreated stored in the passed // Decode deserializes the serialized FundingCreated stored in the passed

View File

@ -60,11 +60,15 @@ func (c *FundingLocked) Decode(r io.Reader, pver uint32) error {
// //
// This is part of the lnwire.Message interface. // This is part of the lnwire.Message interface.
func (c *FundingLocked) Encode(w *bytes.Buffer, pver uint32) error { func (c *FundingLocked) Encode(w *bytes.Buffer, pver uint32) error {
return WriteElements(w, if err := WriteChannelID(w, c.ChanID); err != nil {
c.ChanID, return err
c.NextPerCommitmentPoint, }
c.ExtraData,
) if err := WritePublicKey(w, c.NextPerCommitmentPoint); err != nil {
return err
}
return WriteBytes(w, c.ExtraData)
} }
// MsgType returns the uint32 code which uniquely identifies this message as a // MsgType returns the uint32 code which uniquely identifies this message as a

View File

@ -33,7 +33,15 @@ var _ Message = (*FundingSigned)(nil)
// //
// This is part of the lnwire.Message interface. // This is part of the lnwire.Message interface.
func (f *FundingSigned) Encode(w *bytes.Buffer, pver uint32) error { func (f *FundingSigned) Encode(w *bytes.Buffer, pver uint32) error {
return WriteElements(w, f.ChanID, f.CommitSig, f.ExtraData) if err := WriteChannelID(w, f.ChanID); err != nil {
return err
}
if err := WriteSig(w, f.CommitSig); err != nil {
return err
}
return WriteBytes(w, f.ExtraData)
} }
// Decode deserializes the serialized FundingSigned stored in the passed // Decode deserializes the serialized FundingSigned stored in the passed

View File

@ -59,12 +59,19 @@ func (g *GossipTimestampRange) Decode(r io.Reader, pver uint32) error {
// //
// This is part of the lnwire.Message interface. // This is part of the lnwire.Message interface.
func (g *GossipTimestampRange) Encode(w *bytes.Buffer, pver uint32) error { func (g *GossipTimestampRange) Encode(w *bytes.Buffer, pver uint32) error {
return WriteElements(w, if err := WriteBytes(w, g.ChainHash[:]); err != nil {
g.ChainHash[:], return err
g.FirstTimestamp, }
g.TimestampRange,
g.ExtraData, if err := WriteUint32(w, g.FirstTimestamp); err != nil {
) return err
}
if err := WriteUint32(w, g.TimestampRange); err != nil {
return err
}
return WriteBytes(w, g.ExtraData)
} }
// MsgType returns the integer uniquely identifying this message type on the // MsgType returns the integer uniquely identifying this message type on the

View File

@ -60,11 +60,15 @@ func (msg *Init) Decode(r io.Reader, pver uint32) error {
// //
// This is part of the lnwire.Message interface. // This is part of the lnwire.Message interface.
func (msg *Init) Encode(w *bytes.Buffer, pver uint32) error { func (msg *Init) Encode(w *bytes.Buffer, pver uint32) error {
return WriteElements(w, if err := WriteRawFeatureVector(w, msg.GlobalFeatures); err != nil {
msg.GlobalFeatures, return err
msg.Features, }
msg.ExtraData,
) if err := WriteRawFeatureVector(w, msg.Features); err != nil {
return err
}
return WriteBytes(w, msg.ExtraData)
} }
// MsgType returns the integer uniquely identifying this message type on the // MsgType returns the integer uniquely identifying this message type on the