Skip to content

Commit 78469c5

Browse files
committed
status: add functional opts on SubServerStatus init
Refactor Register & Enable functions to enable setting of SubServerOptions, i.e. functional options, when initiating a SubServer.
1 parent b661875 commit 78469c5

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

status/manager.go

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ import (
99
"github.com/lightninglabs/lightning-terminal/litrpc"
1010
)
1111

12+
// SubServerOption defines a functional option that can be used to modify the
13+
// values of a SubServerStatus's fields.
14+
type SubServerOption func(status *SubServerStatus)
15+
1216
// SubServerStatus represents the status of a sub-server.
1317
type SubServerStatus struct {
1418
// Disabled is true if the sub-server is available in the LiT bundle but
@@ -24,9 +28,9 @@ type SubServerStatus struct {
2428
}
2529

2630
// newSubServerStatus constructs a new SubServerStatus.
27-
func newSubServerStatus() *SubServerStatus {
31+
func newSubServerStatus(disabled bool) *SubServerStatus {
2832
return &SubServerStatus{
29-
Disabled: true,
33+
Disabled: disabled,
3034
}
3135
}
3236

@@ -73,21 +77,32 @@ func (s *Manager) SubServerStatus(_ context.Context,
7377

7478
// RegisterSubServer will create a new sub-server entry for the Manager to
7579
// keep track of.
76-
func (s *Manager) RegisterSubServer(name string) {
80+
func (s *Manager) RegisterSubServer(name string, opts ...SubServerOption) {
7781
s.mu.RLock()
7882
defer s.mu.RUnlock()
7983

80-
s.subServers[name] = newSubServerStatus()
84+
s.registerSubServerUnsafe(name, true, opts...)
8185
}
8286

8387
// RegisterAndEnableSubServer will create a new sub-server entry for the
8488
// Manager to keep track of and will set it as enabled.
85-
func (s *Manager) RegisterAndEnableSubServer(name string) {
89+
func (s *Manager) RegisterAndEnableSubServer(name string,
90+
opts ...SubServerOption) {
91+
8692
s.mu.RLock()
8793
defer s.mu.RUnlock()
8894

89-
ss := newSubServerStatus()
90-
ss.Disabled = false
95+
s.registerSubServerUnsafe(name, false, opts...)
96+
}
97+
98+
func (s *Manager) registerSubServerUnsafe(name string, disabled bool,
99+
opts ...SubServerOption) {
100+
101+
ss := newSubServerStatus(disabled)
102+
103+
for _, o := range opts {
104+
o(ss)
105+
}
91106

92107
s.subServers[name] = ss
93108
}

0 commit comments

Comments
 (0)