adapters
API
adapters
packageAPI reference for the adapters
package.
Imports
(2)
S
struct
Registry
Registry provides a generic, thread-safe registry for pluggable adapters.
pkg/adapters/registry.go:14-18
type Registry struct
Example
r := adapters.NewRegistry[Store]()
r.Register("memory", NewMemoryStore())
r.SetDefault("memory")
Fields
| Name | Type | Description |
|---|---|---|
| adapters | map[string]T | |
| defaultName | string | |
| mu | sync.RWMutex |
F
function
NewRegistry
NewRegistry creates an empty adapter registry.
Returns
*Registry[T]
pkg/adapters/registry.go:21-25
func NewRegistry[T any]() *Registry[T]
{
return &Registry[T]{
adapters: make(map[string]T),
}
}
S
struct
mockTransport
pkg/adapters/registry_test.go:7-9
type mockTransport struct
Fields
| Name | Type | Description |
|---|---|---|
| Name | string |
F
function
TestRegistry_RegisterAndGet
Parameters
t
pkg/adapters/registry_test.go:11-23
func TestRegistry_RegisterAndGet(t *testing.T)
{
r := NewRegistry[*mockTransport]()
tr := &mockTransport{Name: "http"}
r.Register("http", tr)
got, ok := r.Get("http")
if !ok {
t.Fatal("expected to find 'http'")
}
if got.Name != "http" {
t.Errorf("got %q, want %q", got.Name, "http")
}
}
F
function
TestRegistry_Has
Parameters
t
pkg/adapters/registry_test.go:25-35
func TestRegistry_Has(t *testing.T)
{
r := NewRegistry[string]()
r.Register("exists", "value")
if !r.Has("exists") {
t.Error("Has should return true")
}
if r.Has("missing") {
t.Error("Has should return false for missing")
}
}
F
function
TestRegistry_Default
Parameters
t
pkg/adapters/registry_test.go:37-47
func TestRegistry_Default(t *testing.T)
{
r := NewRegistry[string]()
r.Register("http", "HTTP Transport")
r.Register("grpc", "gRPC Transport")
r.SetDefault("http")
got := r.Default()
if got != "HTTP Transport" {
t.Errorf("got %q, want %q", got, "HTTP Transport")
}
}
F
function
TestRegistry_DefaultOr
Parameters
t
pkg/adapters/registry_test.go:49-64
func TestRegistry_DefaultOr(t *testing.T)
{
r := NewRegistry[string]()
got := r.DefaultOr("fallback")
if got != "fallback" {
t.Errorf("got %q, want %q", got, "fallback")
}
r.Register("main", "Main")
r.SetDefault("main")
got = r.DefaultOr("fallback")
if got != "Main" {
t.Errorf("got %q, want %q", got, "Main")
}
}
F
function
TestRegistry_Default_Panic
Parameters
t
pkg/adapters/registry_test.go:66-76
func TestRegistry_Default_Panic(t *testing.T)
{
r := NewRegistry[string]()
defer func() {
if recover() == nil {
t.Error("Default should panic when no default set")
}
}()
r.Default()
}
F
function
TestRegistry_Names
Parameters
t
pkg/adapters/registry_test.go:78-88
func TestRegistry_Names(t *testing.T)
{
r := NewRegistry[int]()
r.Register("a", 1)
r.Register("b", 2)
r.Register("c", 3)
names := r.Names()
if len(names) != 3 {
t.Errorf("got %d names, want 3", len(names))
}
}
F
function
TestRegistry_Remove
Parameters
t
pkg/adapters/registry_test.go:90-107
func TestRegistry_Remove(t *testing.T)
{
r := NewRegistry[string]()
r.Register("key", "value")
r.SetDefault("key")
r.Remove("key")
if r.Has("key") {
t.Error("key should be removed")
}
defer func() {
if recover() == nil {
t.Error("Default should panic after removing default")
}
}()
r.Default()
}
F
function
TestRegistry_Clear
Parameters
t
pkg/adapters/registry_test.go:109-120
func TestRegistry_Clear(t *testing.T)
{
r := NewRegistry[int]()
r.Register("a", 1)
r.Register("b", 2)
r.SetDefault("a")
r.Clear()
if len(r.Names()) != 0 {
t.Error("Clear should remove all adapters")
}
}
F
function
TestRegistry_MustGet_Panic
Parameters
t
pkg/adapters/registry_test.go:122-132
func TestRegistry_MustGet_Panic(t *testing.T)
{
r := NewRegistry[string]()
defer func() {
if recover() == nil {
t.Error("MustGet should panic for missing key")
}
}()
r.MustGet("missing")
}