mirror of https://github.com/XTLS/Xray-core
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.2 KiB
49 lines
1.2 KiB
package internet |
|
|
|
import "github.com/xtls/xray-core/common/net" |
|
|
|
// MemoryStreamConfig is a parsed form of StreamConfig. It is used to reduce the number of Protobuf parses. |
|
type MemoryStreamConfig struct { |
|
Destination *net.Destination |
|
ProtocolName string |
|
ProtocolSettings interface{} |
|
SecurityType string |
|
SecuritySettings interface{} |
|
SocketSettings *SocketConfig |
|
DownloadSettings *MemoryStreamConfig |
|
} |
|
|
|
// ToMemoryStreamConfig converts a StreamConfig to MemoryStreamConfig. It returns a default non-nil MemoryStreamConfig for nil input. |
|
func ToMemoryStreamConfig(s *StreamConfig) (*MemoryStreamConfig, error) { |
|
ets, err := s.GetEffectiveTransportSettings() |
|
if err != nil { |
|
return nil, err |
|
} |
|
|
|
mss := &MemoryStreamConfig{ |
|
ProtocolName: s.GetEffectiveProtocol(), |
|
ProtocolSettings: ets, |
|
} |
|
|
|
if s != nil { |
|
if s.Address != nil { |
|
mss.Destination = &net.Destination{ |
|
Address: s.Address.AsAddress(), |
|
Port: net.Port(s.Port), |
|
Network: net.Network_TCP, |
|
} |
|
} |
|
mss.SocketSettings = s.SocketSettings |
|
} |
|
|
|
if s != nil && s.HasSecuritySettings() { |
|
ess, err := s.GetEffectiveSecuritySettings() |
|
if err != nil { |
|
return nil, err |
|
} |
|
mss.SecurityType = s.SecurityType |
|
mss.SecuritySettings = ess |
|
} |
|
|
|
return mss, nil |
|
}
|
|
|