mirror of
				https://github.com/optim-enterprises-bv/Xray-core.git
				synced 2025-10-31 18:47:52 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 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
 | |
| }
 | 
