github.com/songzhibin97/gkit@v1.2.13/container/queue/codel/example_test.go (about)

     1  package codel
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/songzhibin97/gkit/overload/bbr"
     7  )
     8  
     9  var queue *Queue
    10  
    11  func ExampleNew() {
    12  	// 默认配置
    13  	// queue = NewQueue()
    14  
    15  	// 可供选择配置选项
    16  
    17  	// 设置对列延时
    18  	// SetTarget(40)
    19  
    20  	// 设置滑动窗口最小时间宽度
    21  	// SetInternal(1000)
    22  
    23  	queue = NewQueue(SetTarget(40), SetInternal(1000))
    24  }
    25  
    26  func ExampleQueue_Stat() {
    27  	// start 体现 CoDel 状态信息
    28  	start := queue.Stat()
    29  
    30  	_ = start
    31  }
    32  
    33  func ExampleQueue_Push() {
    34  	// 入队
    35  	if err := queue.Push(context.TODO()); err != nil {
    36  		if err == bbr.LimitExceed {
    37  			// todo 处理过载保护错误
    38  		} else {
    39  			// todo 处理其他错误
    40  		}
    41  	}
    42  }
    43  
    44  func ExampleQueue_Pop() {
    45  	// 出队,没有请求则会阻塞
    46  	queue.Pop()
    47  }