You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: watchdog_reader.go
    path of file: ./repos/plik/vendor/github.com/ncw/swift
    
    the code of the file until where you have to start completion: package swift

import (
	"io"
	"time"
)

var watchdogChunkSize = 1 << 20 // 1 MiB

// An io.Reader which resets a watchdog timer whenever data is read
type watchdogReader struct {
	timeout   time.Duration
	reader    io.Reader
	timer     *time.Timer
	chunkSize int
}

// Returns a new reader which will kick the watchdog timer whenever data is read
func newWatchdogReader(reader io.Reader, timeout time.Duration, timer *time.Timer) *watchdogReader {
	return &watchdogReader{
		timeout:   timeout,
		reader:    reader,
		timer:     timer,
		chunkSize: watchdogChunkSize,
	}
}

//
    
func (t *watchdogReader) Read(p []byte) (int, error) {
	//read from underlying reader in chunks not larger than t.chunkSize
	//while resetting the watchdog timer before every read; the small chunk
	//size ensures that the timer does not fire when reading a large amount of
	//data from a slow connection
	start := 0
	end := len(p)
	for start < end {
		length := end - start
		if length > t.chunkSize {
			length = t.chunkSize
		}

		resetTimer(t.timer, t.timeout)
		n, err := t.reader.Read(p[start : start+length])
		start += n
		if n == 0 || err != nil {
			return start, err
		}
	}

	resetTimer(t.timer, t.timeout)
	return start, nil
}