13 func (me segment) Size() int64 {
14 return int64(len(me.MMap))
17 type MMapSpan struct {
21 func (me *MMapSpan) Append(mmap gommap.MMap) {
22 me.span = append(me.span, segment{mmap})
25 func (me MMapSpan) Close() {
26 for _, mMap := range me.span {
27 mMap.(segment).UnsafeUnmap()
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) WriteSectionTo(w io.Writer, off, n int64) (written int64, err error) {
52 me.ApplyTo(off, func(intervalOffset int64, interval sizer) (stop bool) {
54 p := interval.(segment).MMap[intervalOffset:]
55 if n < int64(len(p)) {
69 func (me MMapSpan) WriteAt(p []byte, off int64) (n int, err error) {
70 me.ApplyTo(off, func(iOff int64, i sizer) (stop bool) {
72 _n := copy(mMap.MMap[iOff:], p)
73 // err = mMap.Sync(gommap.MS_ASYNC)
81 if err != nil && len(p) != 0 {
82 err = io.ErrShortWrite