Add API Framework Revel Source Files
[iec.git] / src / foundation / api / revel / event.go
1 package revel
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 )
11
12 const (
13         // Event type when templates are going to be refreshed (receivers are registered template engines added to the template.engine conf option)
14         TEMPLATE_REFRESH_REQUESTED Event = iota
15         // Event type when templates are refreshed (receivers are registered template engines added to the template.engine conf option)
16         TEMPLATE_REFRESH_COMPLETED
17         // Event type before all module loads, events thrown to handlers added to AddInitEventHandler
18
19         // Event type before all module loads, events thrown to handlers added to AddInitEventHandler
20         REVEL_BEFORE_MODULES_LOADED
21         // Event type after all module loads, events thrown to handlers added to AddInitEventHandler
22         REVEL_AFTER_MODULES_LOADED
23
24         // Event type before server engine is initialized, receivers are active server engine and handlers added to AddInitEventHandler
25         ENGINE_BEFORE_INITIALIZED
26         // Event type before server engine is started, receivers are active server engine and handlers added to AddInitEventHandler
27         ENGINE_STARTED
28
29         // Event raised when the engine is told to shutdown
30         ENGINE_SHUTDOWN_REQUEST
31
32         // Event type after server engine is stopped, receivers are active server engine and handlers added to AddInitEventHandler
33         ENGINE_SHUTDOWN
34
35         // Called before routes are refreshed
36         ROUTE_REFRESH_REQUESTED
37         // Called after routes have been refreshed
38         ROUTE_REFRESH_COMPLETED
39
40         // Fired when a panic is caught during the startup process
41         REVEL_FAILURE
42 )
43
44 // Fires system events from revel
45 func RaiseEvent(key Event, value interface{}) (response EventResponse) {
46         utilLog.Info("Raising event", "len", len(initEventList))
47         for _, handler := range initEventList {
48                 response |= handler(key, value)
49         }
50         return
51 }
52
53 // Add event handler to listen for all system events
54 func AddInitEventHandler(handler EventHandler) {
55         initEventList = append(initEventList, handler)
56         return
57 }