github.com/CPtung/libcompose@v0.4.3/project/events/events.go (about) 1 // Package events holds event structures, methods and functions. 2 package events 3 4 import ( 5 "fmt" 6 "time" 7 ) 8 9 // Notifier defines the methods an event notifier should have. 10 type Notifier interface { 11 Notify(eventType EventType, serviceName string, data map[string]string) 12 } 13 14 // Emitter defines the methods an event emitter should have. 15 type Emitter interface { 16 AddListener(c chan<- Event) 17 } 18 19 // Event holds project-wide event informations. 20 type Event struct { 21 EventType EventType 22 ServiceName string 23 Data map[string]string 24 } 25 26 // ContainerEvent holds attributes of container events. 27 type ContainerEvent struct { 28 Service string `json:"service"` 29 Event string `json:"event"` 30 ID string `json:"id"` 31 Time time.Time `json:"time"` 32 Attributes map[string]string `json:"attributes"` 33 Type string `json:"type"` 34 } 35 36 // EventType defines a type of libcompose event. 37 type EventType int 38 39 // Definitions of libcompose events 40 const ( 41 NoEvent = EventType(iota) 42 43 ContainerCreated = EventType(iota) 44 ContainerStarted = EventType(iota) 45 46 ServiceAdd = EventType(iota) 47 ServiceUpStart = EventType(iota) 48 ServiceUpIgnored = EventType(iota) 49 ServiceUp = EventType(iota) 50 ServiceCreateStart = EventType(iota) 51 ServiceCreate = EventType(iota) 52 ServiceDeleteStart = EventType(iota) 53 ServiceDelete = EventType(iota) 54 ServiceDownStart = EventType(iota) 55 ServiceDown = EventType(iota) 56 ServiceRestartStart = EventType(iota) 57 ServiceRestart = EventType(iota) 58 ServicePullStart = EventType(iota) 59 ServicePull = EventType(iota) 60 ServiceKillStart = EventType(iota) 61 ServiceKill = EventType(iota) 62 ServiceStartStart = EventType(iota) 63 ServiceStart = EventType(iota) 64 ServiceBuildStart = EventType(iota) 65 ServiceBuild = EventType(iota) 66 ServicePauseStart = EventType(iota) 67 ServicePause = EventType(iota) 68 ServiceUnpauseStart = EventType(iota) 69 ServiceUnpause = EventType(iota) 70 ServiceStopStart = EventType(iota) 71 ServiceStop = EventType(iota) 72 ServiceRunStart = EventType(iota) 73 ServiceRun = EventType(iota) 74 75 VolumeAdd = EventType(iota) 76 NetworkAdd = EventType(iota) 77 78 ProjectDownStart = EventType(iota) 79 ProjectDownDone = EventType(iota) 80 ProjectCreateStart = EventType(iota) 81 ProjectCreateDone = EventType(iota) 82 ProjectUpStart = EventType(iota) 83 ProjectUpDone = EventType(iota) 84 ProjectDeleteStart = EventType(iota) 85 ProjectDeleteDone = EventType(iota) 86 ProjectRestartStart = EventType(iota) 87 ProjectRestartDone = EventType(iota) 88 ProjectReload = EventType(iota) 89 ProjectReloadTrigger = EventType(iota) 90 ProjectKillStart = EventType(iota) 91 ProjectKillDone = EventType(iota) 92 ProjectStartStart = EventType(iota) 93 ProjectStartDone = EventType(iota) 94 ProjectBuildStart = EventType(iota) 95 ProjectBuildDone = EventType(iota) 96 ProjectPauseStart = EventType(iota) 97 ProjectPauseDone = EventType(iota) 98 ProjectUnpauseStart = EventType(iota) 99 ProjectUnpauseDone = EventType(iota) 100 ProjectStopStart = EventType(iota) 101 ProjectStopDone = EventType(iota) 102 ) 103 104 func (e EventType) String() string { 105 var m string 106 switch e { 107 case ContainerCreated: 108 m = "Created container" 109 case ContainerStarted: 110 m = "Started container" 111 112 case ServiceAdd: 113 m = "Adding" 114 case ServiceUpStart: 115 m = "Starting" 116 case ServiceUpIgnored: 117 m = "Ignoring" 118 case ServiceUp: 119 m = "Started" 120 case ServiceCreateStart: 121 m = "Creating" 122 case ServiceCreate: 123 m = "Created" 124 case ServiceDeleteStart: 125 m = "Deleting" 126 case ServiceDelete: 127 m = "Deleted" 128 case ServiceStopStart: 129 m = "Stopping" 130 case ServiceStop: 131 m = "Stopped" 132 case ServiceDownStart: 133 m = "Stopping" 134 case ServiceDown: 135 m = "Stopped" 136 case ServiceRestartStart: 137 m = "Restarting" 138 case ServiceRestart: 139 m = "Restarted" 140 case ServicePullStart: 141 m = "Pulling" 142 case ServicePull: 143 m = "Pulled" 144 case ServiceKillStart: 145 m = "Killing" 146 case ServiceKill: 147 m = "Killed" 148 case ServiceStartStart: 149 m = "Starting" 150 case ServiceStart: 151 m = "Started" 152 case ServiceBuildStart: 153 m = "Building" 154 case ServiceBuild: 155 m = "Built" 156 case ServiceRunStart: 157 m = "Executing" 158 case ServiceRun: 159 m = "Executed" 160 case ServicePauseStart: 161 m = "Pausing" 162 case ServicePause: 163 m = "Paused" 164 case ServiceUnpauseStart: 165 m = "Unpausing" 166 case ServiceUnpause: 167 m = "Unpaused" 168 169 case ProjectDownStart: 170 m = "Stopping project" 171 case ProjectDownDone: 172 m = "Project stopped" 173 case ProjectStopStart: 174 m = "Stopping project" 175 case ProjectStopDone: 176 m = "Project stopped" 177 case ProjectCreateStart: 178 m = "Creating project" 179 case ProjectCreateDone: 180 m = "Project created" 181 case ProjectUpStart: 182 m = "Starting project" 183 case ProjectUpDone: 184 m = "Project started" 185 case ProjectDeleteStart: 186 m = "Deleting project" 187 case ProjectDeleteDone: 188 m = "Project deleted" 189 case ProjectRestartStart: 190 m = "Restarting project" 191 case ProjectRestartDone: 192 m = "Project restarted" 193 case ProjectReload: 194 m = "Reloading project" 195 case ProjectReloadTrigger: 196 m = "Triggering project reload" 197 case ProjectKillStart: 198 m = "Killing project" 199 case ProjectKillDone: 200 m = "Project killed" 201 case ProjectStartStart: 202 m = "Starting project" 203 case ProjectStartDone: 204 m = "Project started" 205 case ProjectBuildStart: 206 m = "Building project" 207 case ProjectBuildDone: 208 m = "Project built" 209 case ProjectPauseStart: 210 m = "Pausing project" 211 case ProjectPauseDone: 212 m = "Project paused" 213 case ProjectUnpauseStart: 214 m = "Unpausing project" 215 case ProjectUnpauseDone: 216 m = "Project unpaused" 217 } 218 219 if m == "" { 220 m = fmt.Sprintf("EventType: %d", int(e)) 221 } 222 223 return m 224 }