6 "github.com/edsrzf/mmap-go"
13 func (me segment) Size() int64 {
14 return int64(len(*me.MMap))
17 type MMapSpan struct {
21 func (me *MMapSpan) Append(mmap mmap.MMap) {
22 me.span = append(me.span, segment{&mmap})
25 func (me MMapSpan) Close() {
26 for _, mMap := range me.span {
27 mMap.(segment).Unmap()
31 func (me MMapSpan) Size() (ret int64) {
32 for _, seg := range me.span {
38 func (me MMapSpan) ReadAt(p []byte, off int64) (n int, err error) {
39 me.ApplyTo(off, func(intervalOffset int64, interval sizer) (stop bool) {
40 _n := copy(p, (*interval.(segment).MMap)[intervalOffset:])
51 func (me MMapSpan) WriteAt(p []byte, off int64) (n int, err error) {
52 me.ApplyTo(off, func(iOff int64, i sizer) (stop bool) {
54 _n := copy((*mMap.MMap)[iOff:], p)
55 // err = mMap.Sync(gommap.MS_ASYNC)
63 if err != nil && len(p) != 0 {
64 err = io.ErrShortWrite