github.com/songzhibin97/gkit@v1.2.13/goroutine/option.go (about)

     1  package goroutine
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/songzhibin97/gkit/log"
     7  	"github.com/songzhibin97/gkit/options"
     8  )
     9  
    10  // config
    11  type config struct {
    12  
    13  	// stopTimeout: 关闭超时时间
    14  	// 控制shutdown关闭超时时间
    15  	// <=0 不启动超时时间
    16  	stopTimeout time.Duration
    17  
    18  	// max 最大goroutine以及初始化channel大小,channel长度不可更改
    19  	max int64
    20  
    21  	// idle 闲置goroutine大小
    22  	idle int64
    23  
    24  	// checkTime 检查时间
    25  	checkTime time.Duration
    26  
    27  	// logger 日志输出对象
    28  	logger log.Logger
    29  }
    30  
    31  // SetStopTimeout 设置停止超时时间
    32  func SetStopTimeout(d time.Duration) options.Option {
    33  	return func(c interface{}) { c.(*config).stopTimeout = d }
    34  }
    35  
    36  // SetMax 设置pool最大容量
    37  func SetMax(max int64) options.Option {
    38  	return func(c interface{}) { c.(*config).max = max }
    39  }
    40  
    41  // SetIdle 这是pool闲置goroutine数量
    42  func SetIdle(idle int64) options.Option {
    43  	return func(c interface{}) { c.(*config).idle = idle }
    44  }
    45  
    46  // SetCheckTime 设置检查时间
    47  func SetCheckTime(d time.Duration) options.Option {
    48  	return func(c interface{}) { c.(*config).checkTime = d }
    49  }
    50  
    51  // SetLogger 设置日志对象
    52  func SetLogger(logger log.Logger) options.Option {
    53  	return func(c interface{}) { c.(*config).logger = logger }
    54  }