| 123456789101112131415161718192021222324252627282930313233343536 |
- // +build json
- package transport
- import (
- "encoding/json"
- "strings"
- )
- func (this *Config) UnmarshalJSON(data []byte) error {
- type TypeConfig struct {
- StreamType string `json:"streamType"`
- Settings json.RawMessage `json:"settings"`
- }
- type JsonTCPConfig struct {
- ConnectionReuse bool `json:"connectionReuse"`
- }
- typeConfig := new(TypeConfig)
- if err := json.Unmarshal(data, typeConfig); err != nil {
- return err
- }
- streamType := strings.ToLower(typeConfig.StreamType)
- if streamType == "tcp" {
- jsonTCPConfig := new(JsonTCPConfig)
- if err := json.Unmarshal(data, jsonTCPConfig); err != nil {
- return err
- }
- this.TCPConfig = &TCPConfig{
- ConnectionReuse: jsonTCPConfig.ConnectionReuse,
- }
- }
- return nil
- }
|