There is also ReadAtLeast (https://golang.org/pkg/io/#ReadAtLeast)

On Tue, Oct 11, 2016 at 3:13 PM forfader <mburb...@gmail.com> wrote:

> Thank you. I figured there was such a function. Just couldn't find it.
>
> Michael-
>
>
> On Tuesday, October 11, 2016 at 2:31:41 PM UTC-7, forfader wrote:
>
> I'm reading the Body of an HTTP request. In my handler I want to chunk the
> response body up into fixed size blocks. I doing this using the following
> code:
>
> b := make([]byte, config.Blocksize)
>                 for {
> cnt, err := r.Body.Read(b)
> if err == io.EOF {
> break
> }
> if err != nil {
> log.Error("Reading reading request stream", "name", name)
> utils.WriteError(w, http.StatusInternalServerError, "Error reading request
> stream")
> return
> }
>
> log.Info("Length read", "len", cnt)
>                     }
>
> What I'm seeing is various block sizes being read from the Body reader. I
> assume that is because the bytes coming over the http stream are not coming
> fast enough to keep up with my executing code, and so when r.Body.Read is
> executed I get how ever many bytes are currently available on the stream
> and not more.
>
> Is there easy way to read fixed size blocks from the request body reader
> using a built in library function? Say bytes, or bufio. I looked but could
> not see a function.
>
> I can imagine doing this myself, with multiple reads inside the for loop.
>
> Thanks
> Michael-
>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to