From 1a5b5c5f62c37c6c68a2cd9ece2a7fabe90c02b0 Mon Sep 17 00:00:00 2001 From: Keagan McClelland Date: Tue, 23 Apr 2024 14:10:33 -0700 Subject: [PATCH] lntypes: Add a ChannelParty type. This commit introduces a ChannelParty type to LND. It is useful for consolidating all references to the duality between the local and remote nodes. This is currently handled by having named struct rows or named boolean parameters, named either "local" or "remote". This change alleviates the programmer from having to decide which node should be bound to `true` or `false`. In an upcoming commit we will change callsites to use this. --- lntypes/channel_party.go | 52 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 lntypes/channel_party.go diff --git a/lntypes/channel_party.go b/lntypes/channel_party.go new file mode 100644 index 000000000..be800541b --- /dev/null +++ b/lntypes/channel_party.go @@ -0,0 +1,52 @@ +package lntypes + +import "fmt" + +// ChannelParty is a type used to have an unambiguous description of which node +// is being referred to. This eliminates the need to describe as "local" or +// "remote" using bool. +type ChannelParty uint8 + +const ( + // Local is a ChannelParty constructor that is used to refer to the + // node that is running. + Local ChannelParty = iota + + // Remote is a ChannelParty constructor that is used to refer to the + // node on the other end of the peer connection. + Remote +) + +// String provides a string representation of ChannelParty (useful for logging). +func (p ChannelParty) String() string { + switch p { + case Local: + return "Local" + case Remote: + return "Remote" + default: + panic(fmt.Sprintf("invalid ChannelParty value: %d", p)) + } +} + +// CounterParty inverts the role of the ChannelParty. +func (p ChannelParty) CounterParty() ChannelParty { + switch p { + case Local: + return Remote + case Remote: + return Local + default: + panic(fmt.Sprintf("invalid ChannelParty value: %v", p)) + } +} + +// IsLocal returns true if the ChannelParty is Local. +func (p ChannelParty) IsLocal() bool { + return p == Local +} + +// IsRemote returns true if the ChannelParty is Remote. +func (p ChannelParty) IsRemote() bool { + return p == Remote +}