Hunter0x7c7
2022-08-11 b8230139fb40edea387617b6accd8371e37eda58
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package internet
 
// MemoryStreamConfig is a parsed form of StreamConfig. This is used to reduce number of Protobuf parsing.
type MemoryStreamConfig struct {
    ProtocolName     string
    ProtocolSettings interface{}
    SecurityType     string
    SecuritySettings interface{}
    SocketSettings   *SocketConfig
}
 
// 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 {
        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
}