context.go 794 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package internet
  2. import (
  3. "context"
  4. "v2ray.com/core/common/net"
  5. )
  6. type key int
  7. const (
  8. streamSettingsKey key = iota
  9. dialerSrcKey
  10. )
  11. func ContextWithStreamSettings(ctx context.Context, streamSettings *MemoryStreamConfig) context.Context {
  12. return context.WithValue(ctx, streamSettingsKey, streamSettings)
  13. }
  14. func StreamSettingsFromContext(ctx context.Context) *MemoryStreamConfig {
  15. ss := ctx.Value(streamSettingsKey)
  16. if ss == nil {
  17. return nil
  18. }
  19. return ss.(*MemoryStreamConfig)
  20. }
  21. func ContextWithDialerSource(ctx context.Context, addr net.Address) context.Context {
  22. return context.WithValue(ctx, dialerSrcKey, addr)
  23. }
  24. func DialerSourceFromContext(ctx context.Context) net.Address {
  25. if addr, ok := ctx.Value(dialerSrcKey).(net.Address); ok {
  26. return addr
  27. }
  28. return net.AnyIP
  29. }