File: writer.go

package info (click to toggle)
gitlab-ci-multi-runner 14.10.1-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 31,248 kB
  • sloc: sh: 1,694; makefile: 384; asm: 79; ruby: 68
file content (41 lines) | stat: -rw-r--r-- 526 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package meter

import (
	"io"
	"sync/atomic"
	"time"
)

type writer struct {
	*meter

	w io.WriteCloser
}

func NewWriter(w io.WriteCloser, frequency time.Duration, fn UpdateCallback) io.WriteCloser {
	if frequency == 0 {
		return w
	}

	m := &writer{
		w:     w,
		meter: newMeter(),
	}

	m.start(frequency, fn)

	return m
}

func (m *writer) Write(p []byte) (int, error) {
	n, err := m.w.Write(p)
	atomic.AddUint64(&m.count, uint64(n))

	return n, err
}

func (m *writer) Close() error {
	m.doClose()

	return m.w.Close()
}