context.go 837 B

123456789101112131415161718192021222324252627282930313233343536373839
  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. transportSettingsKey
  11. securitySettingsKey
  12. )
  13. func ContextWithStreamSettings(ctx context.Context, streamSettings *MemoryStreamConfig) context.Context {
  14. return context.WithValue(ctx, streamSettingsKey, streamSettings)
  15. }
  16. func StreamSettingsFromContext(ctx context.Context) *MemoryStreamConfig {
  17. ss := ctx.Value(streamSettingsKey)
  18. if ss == nil {
  19. return nil
  20. }
  21. return ss.(*MemoryStreamConfig)
  22. }
  23. func ContextWithDialerSource(ctx context.Context, addr net.Address) context.Context {
  24. return context.WithValue(ctx, dialerSrcKey, addr)
  25. }
  26. func DialerSourceFromContext(ctx context.Context) net.Address {
  27. if addr, ok := ctx.Value(dialerSrcKey).(net.Address); ok {
  28. return addr
  29. }
  30. return net.AnyIP
  31. }