kompose/vendor/github.com/vdemeester/docker-events/README.md
2016-07-18 23:23:39 +07:00

81 lines
2.1 KiB
Markdown

# docker-events
[![GoDoc](https://godoc.org/github.com/vdemeester/docker-events?status.png)](https://godoc.org/github.com/vdemeester/docker-events)
[![Build Status](https://travis-ci.org/vdemeester/docker-events.svg?branch=master)](https://travis-ci.org/vdemeester/docker-events)
[![Go Report Card](https://goreportcard.com/badge/github.com/vdemeester/docker-events)](https://goreportcard.com/report/github.com/vdemeester/docker-events)
[![License](https://img.shields.io/github/license/vdemeester/docker-events.svg)]()
A really small library with the intent to ease the use of `Events`
method of `engine-api`.
## Usage
It should be pretty straighforward to use :
```go
import "events"
// […]
cli, err := client.NewEnvClient()
if err != nil {
// Do something..
}
cxt, cancel := context.WithCancel(context.Background())
// Call cancel() to get out of the monitor
errChan := events.Monitor(ctx, cli, types.EventsOptions{}, func(event eventtypes.Message) {
fmt.Printf("%v\n", event)
})
if err := <-errChan; err != nil {
// Do something
}
```
It's also possible to do a little more advanced stuff using
`EventHandler` :
```go
import "events"
// […]
cli, err := client.NewEnvClient()
if err != nil {
// Do something..
}
// Setup the event handler
eventHandler := events.NewHandler(events.ByAction)
eventHandler.Handle("create", func(m eventtypes.Message) {
// Do something in case of create message
})
stoppedOrDead := func(m eventtypes.Message) {
// Do something in case of stop or die message as it might be the
// same way to react.
}
eventHandler.Handle("die", stoppedOrDead)
eventHandler.Handle("stop", stoppedOrDead)
// The other type of message will be discard.
// Filter the events we wams so receive
filters := filters.NewArgs()
filters.Add("type", "container")
options := types.EventsOptions{
Filters: filters,
}
cxt, cancel := context.WithCancel(context.Background())
// Call cancel() to get out of the monitor
errChan := events.MonitorWithHandler(ctx, cli, options, eventHandler)
if err := <-errChan; err != nil {
// Do something
}
```