]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blob - vendor/github.com/fsouza/go-dockerclient/external/github.com/docker/docker/pkg/ioutils/writers.go
ccc7f9c23e0f4e9422de8d5bc736f8b488f58bf0
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / fsouza / go-dockerclient / external / github.com / docker / docker / pkg / ioutils / writers.go
1 package ioutils
2
3 import "io"
4
5 // NopWriter represents a type which write operation is nop.
6 type NopWriter struct{}
7
8 func (*NopWriter) Write(buf []byte) (int, error) {
9 return len(buf), nil
10 }
11
12 type nopWriteCloser struct {
13 io.Writer
14 }
15
16 func (w *nopWriteCloser) Close() error { return nil }
17
18 // NopWriteCloser returns a nopWriteCloser.
19 func NopWriteCloser(w io.Writer) io.WriteCloser {
20 return &nopWriteCloser{w}
21 }
22
23 // NopFlusher represents a type which flush operation is nop.
24 type NopFlusher struct{}
25
26 // Flush is a nop operation.
27 func (f *NopFlusher) Flush() {}
28
29 type writeCloserWrapper struct {
30 io.Writer
31 closer func() error
32 }
33
34 func (r *writeCloserWrapper) Close() error {
35 return r.closer()
36 }
37
38 // NewWriteCloserWrapper returns a new io.WriteCloser.
39 func NewWriteCloserWrapper(r io.Writer, closer func() error) io.WriteCloser {
40 return &writeCloserWrapper{
41 Writer: r,
42 closer: closer,
43 }
44 }
45
46 // WriteCounter wraps a concrete io.Writer and hold a count of the number
47 // of bytes written to the writer during a "session".
48 // This can be convenient when write return is masked
49 // (e.g., json.Encoder.Encode())
50 type WriteCounter struct {
51 Count int64
52 Writer io.Writer
53 }
54
55 // NewWriteCounter returns a new WriteCounter.
56 func NewWriteCounter(w io.Writer) *WriteCounter {
57 return &WriteCounter{
58 Writer: w,
59 }
60 }
61
62 func (wc *WriteCounter) Write(p []byte) (count int, err error) {
63 count, err = wc.Writer.Write(p)
64 wc.Count += int64(count)
65 return
66 }