github.com/zly-app/zapp@v1.3.3/handler/handler.go (about)

     1  /*
     2  -------------------------------------------------
     3     Author :       zlyuancn
     4     date:         2020/8/22
     5     Description :
     6  -------------------------------------------------
     7  */
     8  
     9  package handler
    10  
    11  import (
    12  	"github.com/zly-app/zapp/core"
    13  )
    14  
    15  type Handler func(app core.IApp, handlerType HandlerType)
    16  
    17  var handlers = map[HandlerType][]Handler{}
    18  
    19  // handler类型
    20  type HandlerType int
    21  
    22  const (
    23  	// 在app初始化前
    24  	BeforeInitializeHandler HandlerType = iota + 1
    25  	// 在app初始化后
    26  	AfterInitializeHandler
    27  	// 在app启动前
    28  	BeforeStartHandler
    29  	// 在app启动后
    30  	AfterStartHandler
    31  	// 在app退出前
    32  	BeforeExitHandler
    33  	// 在app退出后
    34  	AfterExitHandler
    35  )
    36  
    37  // 添加handler, 和WithHandler不同的是, 它可以在NewApp之前执行, 并且它的执行顺序优先于WithHandler
    38  func AddHandler(t HandlerType, hs ...Handler) {
    39  	handlers[t] = append(handlers[t], hs...)
    40  }
    41  
    42  // 触发
    43  func Trigger(app core.IApp, t HandlerType) {
    44  	for _, h := range handlers[t] {
    45  		h(app, t)
    46  	}
    47  }