MCPcopy
hub / github.com/uber-go/zap / RegisterSink

Method RegisterSink

sink.go:75–91  ·  view source on GitHub ↗

RegisterSink registers the given factory for the specific scheme.

(scheme string, factory func(*url.URL) (Sink, error))

Source from the content-addressed store, hash-verified

73
74// RegisterSink registers the given factory for the specific scheme.
75func (sr *sinkRegistry) RegisterSink(scheme string, factory func(*url.URL) (Sink, error)) error {
76 sr.mu.Lock()
77 defer sr.mu.Unlock()
78
79 if scheme == "" {
80 return errors.New("can't register a sink factory for empty string")
81 }
82 normalized, err := normalizeScheme(scheme)
83 if err != nil {
84 return fmt.Errorf("%q is not a valid scheme: %v", scheme, err)
85 }
86 if _, ok := sr.factories[normalized]; ok {
87 return fmt.Errorf("sink factory already registered for scheme %q", normalized)
88 }
89 sr.factories[normalized] = factory
90 return nil
91}
92
93func (sr *sinkRegistry) newSink(rawURL string) (Sink, error) {
94 // URL parsing doesn't work well for Windows paths such as `c:\log.txt`, as scheme is set to

Callers 3

newSinkRegistryFunction · 0.95
RegisterSinkFunction · 0.80
TestRegisterSinkErrorsFunction · 0.80

Calls 2

normalizeSchemeFunction · 0.85
ErrorfMethod · 0.65

Tested by 1

TestRegisterSinkErrorsFunction · 0.64