35 lines
669 B
Go
35 lines
669 B
Go
package mock
|
|
|
|
import (
|
|
"context"
|
|
"net"
|
|
)
|
|
|
|
type httpContextKey string
|
|
|
|
const (
|
|
remoteAddrKey httpContextKey = "RemoteAddr"
|
|
localAddrKey httpContextKey = "LocalAddr"
|
|
)
|
|
|
|
func StoreConnPropertiesInContext(ctx context.Context, c net.Conn) context.Context {
|
|
ctx = context.WithValue(ctx, remoteAddrKey, c.RemoteAddr())
|
|
ctx = context.WithValue(ctx, localAddrKey, c.LocalAddr())
|
|
return ctx
|
|
}
|
|
|
|
func LocalAddr(ctx context.Context) net.Addr {
|
|
val := ctx.Value(localAddrKey)
|
|
if val == nil {
|
|
return nil
|
|
}
|
|
return val.(net.Addr)
|
|
}
|
|
|
|
func RemoteAddr(ctx context.Context) net.Addr {
|
|
val := ctx.Value(remoteAddrKey)
|
|
if val == nil {
|
|
return nil
|
|
}
|
|
return val.(net.Addr)
|
|
}
|