diff --git a/ngochess/katago/engine_analysis.go b/ngochess/katago/engine_analysis.go index 8a891a6..02d460d 100644 --- a/ngochess/katago/engine_analysis.go +++ b/ngochess/katago/engine_analysis.go @@ -19,9 +19,10 @@ var ErrTimeout = errors.New("timeout") type ( Options struct { - DevMode bool `json:",default=false"` // 开发模式 - MaxMessageId uint64 `json:",default=9999999"` // 最大消息ID - Timeout time.Duration `json:""` // 单条命令最大等待时间,默认10min + DevMode bool `json:",default=false"` // 开发模式 + MaxMessageId uint64 `json:",default=9999999"` // 最大消息ID + Timeout time.Duration `json:""` // 单条命令最大等待时间,默认10min + LineBufferSize int `json:""` // LineBufferSize } Option func(options *Options) @@ -63,6 +64,9 @@ func NewKatagoAnalysisEngine(opts ...Option) *AnalysisEngine { if ret.Timeout == 0 { ret.Timeout = DefaultTimeout } + if ret.LineBufferSize == 0 { + ret.LineBufferSize = ncmd.DEFAULT_LINE_BUFFER_SIZE * 4 + } ret.serializer = serializer ret.Cmd = ncmd.NewCmd(ncmd.WithOptions(&ncmd.Options{ @@ -70,7 +74,7 @@ func NewKatagoAnalysisEngine(opts ...Option) *AnalysisEngine { Buffered: false, CombinedOutput: false, Streaming: true, - LineBufferSize: ncmd.DEFAULT_LINE_BUFFER_SIZE, + LineBufferSize: ncmd.DEFAULT_LINE_BUFFER_SIZE * 4, DevMode: ret.DevMode, })) diff --git a/ngochess/katago/options.go b/ngochess/katago/options.go index dddff63..4cb3fa0 100644 --- a/ngochess/katago/options.go +++ b/ngochess/katago/options.go @@ -7,6 +7,7 @@ func WithOptions(opt Options) Option { options.DevMode = opt.DevMode options.MaxMessageId = opt.MaxMessageId options.Timeout = opt.Timeout + options.LineBufferSize = opt.LineBufferSize } } @@ -27,3 +28,9 @@ func WithTimeout(timeout time.Duration) Option { options.Timeout = timeout } } + +func WithLineBufferSize(size int) Option { + return func(options *Options) { + options.LineBufferSize = size + } +}