Example #1
0
func (w *testWriter) Close() error {
	p := w.p
	desc := p.desc

	desc.Lock()
	desc.print(fmt.Sprintf("testDesc: closing writer, num=%d type=%s", p.num, p.t))
	p.opened = false
	desc.Unlock()

	return nil
}
Example #2
0
func (p *testFilePtr) Remove() error {
	desc := p.desc

	desc.Lock()
	defer desc.Unlock()

	desc.print(fmt.Sprintf("testDesc: removing file, num=%d type=%s", p.num, p.t))

	if f, exist := desc.files[p.id()]; exist {
		if f.opened {
			return errFileOpen
		}
		f.buf.Reset()
		delete(desc.files, p.id())
	}

	return nil
}
Example #3
0
func (p *testFilePtr) Open() (r desc.Reader, err error) {
	desc := p.desc

	desc.Lock()
	defer desc.Unlock()

	desc.print(fmt.Sprintf("testDesc: open file, num=%d type=%s", p.num, p.t))

	f, exist := desc.files[p.id()]
	if !exist {
		return nil, os.ErrNotExist
	}

	if f.opened {
		return nil, errFileOpen
	}

	f.opened = true
	r = &testReader{f, bytes.NewReader(f.buf.Bytes())}
	return
}
Example #4
0
func (p *testFilePtr) Create() (w desc.Writer, err error) {
	desc := p.desc

	desc.Lock()
	defer desc.Unlock()

	desc.print(fmt.Sprintf("testDesc: create file, num=%d type=%s", p.num, p.t))

	f, exist := desc.files[p.id()]
	if exist {
		if f.opened {
			return nil, errFileOpen
		}
	} else {
		f = &testFile{desc: desc, num: p.num, t: p.t}
		desc.files[p.id()] = f
	}

	f.opened = true
	f.buf.Reset()
	return &testWriter{f}, nil
}
Example #5
0
func (p *testFilePtr) Rename(num uint64, t desc.FileType) error {
	desc := p.desc

	desc.Lock()
	defer desc.Unlock()

	desc.print(fmt.Sprintf("testDesc: rename file, from num=%d type=%s, to num=%d type=%d", p.num, p.t, num, t))

	oid := p.id()
	p.num = num
	p.t = t

	if f, exist := desc.files[oid]; exist {
		if f.opened {
			return errFileOpen
		}
		delete(desc.files, oid)
		f.num = num
		f.t = t
		desc.files[p.id()] = f
	}

	return nil
}