| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | 
							- package option
 
- import (
 
- 	"encoding/json"
 
- 	"github.com/sagernet/sing-box/common/humanize"
 
- )
 
- type DebugOptions struct {
 
- 	Listen       string      `json:"listen,omitempty"`
 
- 	GCPercent    *int        `json:"gc_percent,omitempty"`
 
- 	MaxStack     *int        `json:"max_stack,omitempty"`
 
- 	MaxThreads   *int        `json:"max_threads,omitempty"`
 
- 	PanicOnFault *bool       `json:"panic_on_fault,omitempty"`
 
- 	TraceBack    string      `json:"trace_back,omitempty"`
 
- 	MemoryLimit  MemoryBytes `json:"memory_limit,omitempty"`
 
- 	OOMKiller    *bool       `json:"oom_killer,omitempty"`
 
- }
 
- type MemoryBytes uint64
 
- func (l MemoryBytes) MarshalJSON() ([]byte, error) {
 
- 	return json.Marshal(humanize.MemoryBytes(uint64(l)))
 
- }
 
- func (l *MemoryBytes) UnmarshalJSON(bytes []byte) error {
 
- 	var valueInteger int64
 
- 	err := json.Unmarshal(bytes, &valueInteger)
 
- 	if err == nil {
 
- 		*l = MemoryBytes(valueInteger)
 
- 		return nil
 
- 	}
 
- 	var valueString string
 
- 	err = json.Unmarshal(bytes, &valueString)
 
- 	if err != nil {
 
- 		return err
 
- 	}
 
- 	parsedValue, err := humanize.ParseMemoryBytes(valueString)
 
- 	if err != nil {
 
- 		return err
 
- 	}
 
- 	*l = MemoryBytes(parsedValue)
 
- 	return nil
 
- }
 
 
  |