github.com/mlmmr/revel-cmd@v0.21.2-0.20191112133115-68d8795776dd/model/event.go (about) 1 package model 2 3 type ( 4 // The event type 5 Event int 6 // The event response 7 EventResponse int 8 // The handler signature 9 EventHandler func(typeOf Event, value interface{}) (responseOf EventResponse) 10 RevelCallback interface { 11 FireEvent(key Event, value interface{}) (response EventResponse) 12 PackageResolver(pkgName string) error 13 } 14 ) 15 16 const ( 17 // Event type when templates are going to be refreshed (receivers are registered template engines added to the template.engine conf option) 18 TEMPLATE_REFRESH_REQUESTED Event = iota 19 // Event type when templates are refreshed (receivers are registered template engines added to the template.engine conf option) 20 TEMPLATE_REFRESH_COMPLETED 21 // Event type before all module loads, events thrown to handlers added to AddInitEventHandler 22 23 // Event type before all module loads, events thrown to handlers added to AddInitEventHandler 24 REVEL_BEFORE_MODULES_LOADED 25 // Event type before module loads, events thrown to handlers added to AddInitEventHandler 26 REVEL_BEFORE_MODULE_LOADED 27 // Event type after module loads, events thrown to handlers added to AddInitEventHandler 28 REVEL_AFTER_MODULE_LOADED 29 // Event type after all module loads, events thrown to handlers added to AddInitEventHandler 30 REVEL_AFTER_MODULES_LOADED 31 32 // Event type before server engine is initialized, receivers are active server engine and handlers added to AddInitEventHandler 33 ENGINE_BEFORE_INITIALIZED 34 // Event type before server engine is started, receivers are active server engine and handlers added to AddInitEventHandler 35 ENGINE_STARTED 36 // Event type after server engine is stopped, receivers are active server engine and handlers added to AddInitEventHandler 37 ENGINE_SHUTDOWN 38 39 // Called before routes are refreshed 40 ROUTE_REFRESH_REQUESTED 41 // Called after routes have been refreshed 42 ROUTE_REFRESH_COMPLETED 43 44 // Fired when a panic is caught during the startup process 45 REVEL_FAILURE 46 ) 47 48 var initEventList = []EventHandler{} // Event handler list for receiving events 49 50 // Fires system events from revel 51 func RaiseEvent(key Event, value interface{}) (response EventResponse) { 52 for _, handler := range initEventList { 53 response |= handler(key, value) 54 } 55 return 56 } 57 58 // Add event handler to listen for all system events 59 func AddInitEventHandler(handler EventHandler) { 60 initEventList = append(initEventList, handler) 61 return 62 }