...

Source file src/github.com/99designs/gqlgen/graphql/handler/transport/reader.go

Documentation: github.com/99designs/gqlgen/graphql/handler/transport

     1  package transport
     2  
     3  import (
     4  	"errors"
     5  	"io"
     6  )
     7  
     8  type bytesReader struct {
     9  	s *[]byte
    10  	i int64 // current reading index
    11  }
    12  
    13  func (r *bytesReader) Read(b []byte) (n int, err error) {
    14  	if r.s == nil {
    15  		return 0, errors.New("byte slice pointer is nil")
    16  	}
    17  	if r.i >= int64(len(*r.s)) {
    18  		return 0, io.EOF
    19  	}
    20  	n = copy(b, (*r.s)[r.i:])
    21  	r.i += int64(n)
    22  	return
    23  }
    24  
    25  func (r *bytesReader) Seek(offset int64, whence int) (int64, error) {
    26  	if r.s == nil {
    27  		return 0, errors.New("byte slice pointer is nil")
    28  	}
    29  	var abs int64
    30  	switch whence {
    31  	case io.SeekStart:
    32  		abs = offset
    33  	case io.SeekCurrent:
    34  		abs = r.i + offset
    35  	case io.SeekEnd:
    36  		abs = int64(len(*r.s)) + offset
    37  	default:
    38  		return 0, errors.New("invalid whence")
    39  	}
    40  	if abs < 0 {
    41  		return 0, errors.New("negative position")
    42  	}
    43  	r.i = abs
    44  	return abs, nil
    45  }
    46  

View as plain text