12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package trace
- import (
- "errors"
- "net/http"
- "strings"
- )
- // ErrInvalidCarrier indicates an error that the carrier is invalid.
- var ErrInvalidCarrier = errors.New("invalid carrier")
- type (
- // Carrier interface wraps the Get and Set method.
- Carrier interface {
- Get(key string) string
- Set(key, value string)
- }
- httpCarrier http.Header
- // grpc metadata takes keys as case insensitive
- grpcCarrier map[string][]string
- )
- func (h httpCarrier) Get(key string) string {
- return http.Header(h).Get(key)
- }
- func (h httpCarrier) Set(key, val string) {
- http.Header(h).Set(key, val)
- }
- func (g grpcCarrier) Get(key string) string {
- if vals, ok := g[strings.ToLower(key)]; ok && len(vals) > 0 {
- return vals[0]
- }
- return ""
- }
- func (g grpcCarrier) Set(key, val string) {
- key = strings.ToLower(key)
- g[key] = append(g[key], val)
- }
|