package systemtables

import (
	"context"
	"net"
)

// ConnInfo carries connection-local data for system table resolution.
type ConnInfo struct {
	LocalAddr net.Addr
}

type connInfoKey struct{}

// WithConnInfo stores connection details in context for system table providers.
func WithConnInfo(ctx context.Context, info ConnInfo) context.Context {
	if ctx == nil {
		return nil
	}
	return context.WithValue(ctx, connInfoKey{}, info)
}

func connInfoFromContext(ctx context.Context) (ConnInfo, bool) {
	if ctx == nil {
		return ConnInfo{}, false
	}
	value := ctx.Value(connInfoKey{})
	if value == nil {
		return ConnInfo{}, false
	}
	info, ok := value.(ConnInfo)
	return info, ok
}
