remove error returns from component getter functions
This commit is contained in:
@@ -48,7 +48,7 @@ logger to carry `module` and `path` automatically.
|
||||
func NewPool(ctx context.Context, id string, handler slog.Handler) (*Pool, error) {
|
||||
ctx = component.MustNew(ctx, "honeybee", "outbound_pool")
|
||||
|
||||
c, _ := component.Get(ctx)
|
||||
c := component.FromContext(ctx)
|
||||
logger := slog.New(handler).With(slog.Any("component", c), slog.String("pool_id", id))
|
||||
|
||||
return &Pool{ctx: ctx, logger: logger}, nil
|
||||
@@ -64,7 +64,7 @@ path. No parent identifiers need to be passed as arguments.
|
||||
func NewWorker(ctx context.Context, id string, handler slog.Handler) (*Worker, error) {
|
||||
ctx = component.MustExtend(ctx, "outbound_worker")
|
||||
|
||||
c, _ := component.Get(ctx)
|
||||
c := component.FromContext(ctx)
|
||||
logger := slog.New(handler).With(slog.Any("component", c), slog.Any("peer_id", id))
|
||||
|
||||
return &Worker{ctx: ctx, logger: logger}, nil
|
||||
@@ -85,8 +85,8 @@ component is a programming error that should halt execution immediately.
|
||||
|
||||
**Generic Output**:
|
||||
|
||||
`GetFields` provides the component fields as a `map[string]string` for non-slog
|
||||
consumers such as OpenTelemetry or Prometheus.
|
||||
`FieldsFromContext` provides the component fields as a `map[string]string` for non-slog
|
||||
consumers such as OpenTelemetry or Prometheus. It returns `nil` if no component is present.
|
||||
|
||||
## Testing
|
||||
|
||||
|
||||
@@ -42,23 +42,25 @@ func insert(ctx context.Context, module string, name string, path []string) cont
|
||||
})
|
||||
}
|
||||
|
||||
// Get retrieves the current component from the context; returns false if none is present.
|
||||
func Get(ctx context.Context) (Component, bool) {
|
||||
t, ok := ctx.Value(storageKey).(component)
|
||||
return t, ok
|
||||
}
|
||||
|
||||
// GetFields returns the component as a string map with keys "module" and "path".
|
||||
func GetFields(ctx context.Context) (map[string]string, bool) {
|
||||
c, ok := Get(ctx)
|
||||
// FromContext retrieves the current component from the context; returns nil if none is present.
|
||||
func FromContext(ctx context.Context) Component {
|
||||
c, ok := ctx.Value(storageKey).(component)
|
||||
if !ok {
|
||||
return nil, false
|
||||
return nil
|
||||
}
|
||||
return c
|
||||
}
|
||||
|
||||
// FieldsFromContext returns the component as a string map with keys "module" and "path"; returns nil if none is present.
|
||||
func FieldsFromContext(ctx context.Context) map[string]string {
|
||||
c := FromContext(ctx)
|
||||
if c == nil {
|
||||
return nil
|
||||
}
|
||||
return map[string]string{
|
||||
"module": c.Module(),
|
||||
"path": c.PathString(),
|
||||
}, true
|
||||
}
|
||||
}
|
||||
|
||||
// New sets a new component on the context, resetting any existing component.
|
||||
@@ -81,8 +83,8 @@ func Extend(ctx context.Context, name string) (context.Context, error) {
|
||||
return nil, fmt.Errorf("context is nil")
|
||||
}
|
||||
|
||||
c, ok := Get(ctx)
|
||||
if !ok {
|
||||
c := FromContext(ctx)
|
||||
if c == nil {
|
||||
return nil, fmt.Errorf("missing parent component")
|
||||
}
|
||||
|
||||
@@ -113,8 +115,8 @@ func MustExtend(ctx context.Context, name string) context.Context {
|
||||
panic("context is nil")
|
||||
}
|
||||
|
||||
c, ok := Get(ctx)
|
||||
if !ok {
|
||||
c := FromContext(ctx)
|
||||
if c == nil {
|
||||
panic("missing parent component")
|
||||
}
|
||||
|
||||
|
||||
+12
-15
@@ -22,8 +22,8 @@ func TestNew(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatalf("expected no error, got %v", err)
|
||||
}
|
||||
c, ok := Get(ctx)
|
||||
if !ok {
|
||||
c := FromContext(ctx)
|
||||
if c == nil {
|
||||
t.Fatal("expected component in context")
|
||||
}
|
||||
if c.Module() != "mymodule" {
|
||||
@@ -58,8 +58,8 @@ func TestExtend(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatalf("expected no error, got %v", err)
|
||||
}
|
||||
c, ok := Get(ctx)
|
||||
if !ok {
|
||||
c := FromContext(ctx)
|
||||
if c == nil {
|
||||
t.Fatal("expected component in context")
|
||||
}
|
||||
if c.Module() != "mymodule" {
|
||||
@@ -87,28 +87,25 @@ func TestExtend(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func TestGet(t *testing.T) {
|
||||
_, ok := Get(context.Background())
|
||||
if ok {
|
||||
func TestFromContext(t *testing.T) {
|
||||
if FromContext(context.Background()) != nil {
|
||||
t.Fatal("expected no component on bare context")
|
||||
}
|
||||
|
||||
ctx := MustNew(context.Background(), "mymodule", "mycomponent")
|
||||
_, ok = Get(ctx)
|
||||
if !ok {
|
||||
if FromContext(ctx) == nil {
|
||||
t.Fatal("expected component in context")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetFields(t *testing.T) {
|
||||
_, ok := GetFields(context.Background())
|
||||
if ok {
|
||||
func TestFieldsFromContext(t *testing.T) {
|
||||
if FieldsFromContext(context.Background()) != nil {
|
||||
t.Fatal("expected no fields on bare context")
|
||||
}
|
||||
|
||||
ctx := MustNew(context.Background(), "mymodule", "mycomponent")
|
||||
fields, ok := GetFields(ctx)
|
||||
if !ok {
|
||||
fields := FieldsFromContext(ctx)
|
||||
if fields == nil {
|
||||
t.Fatal("expected fields in context")
|
||||
}
|
||||
if fields["module"] != "mymodule" {
|
||||
@@ -121,7 +118,7 @@ func TestGetFields(t *testing.T) {
|
||||
|
||||
func TestLogValue(t *testing.T) {
|
||||
ctx := MustNew(context.Background(), "mymodule", "mycomponent")
|
||||
c, _ := Get(ctx)
|
||||
c := FromContext(ctx)
|
||||
v := c.LogValue()
|
||||
attrs := v.Group()
|
||||
if len(attrs) != 2 {
|
||||
|
||||
Reference in New Issue
Block a user