(pairs map[string]string)
| 76 | } |
| 77 | |
| 78 | func (w *streamWriter) writePairs(pairs map[string]string) error { |
| 79 | b := make([]byte, 8) |
| 80 | nn := 0 |
| 81 | // init headers |
| 82 | w.buf.Write(b) |
| 83 | for k, v := range pairs { |
| 84 | m := 8 + len(k) + len(v) |
| 85 | if m > maxWrite { |
| 86 | // param data size exceed 65535 bytes" |
| 87 | vl := maxWrite - 8 - len(k) |
| 88 | v = v[:vl] |
| 89 | } |
| 90 | n := encodeSize(b, uint32(len(k))) |
| 91 | n += encodeSize(b[n:], uint32(len(v))) |
| 92 | m = n + len(k) + len(v) |
| 93 | if (nn + m) > maxWrite { |
| 94 | if err := w.Flush(); err != nil { |
| 95 | return err |
| 96 | } |
| 97 | // reset headers |
| 98 | w.buf.Write(b) |
| 99 | nn = 0 |
| 100 | } |
| 101 | nn += m |
| 102 | w.buf.Write(b[:n]) |
| 103 | w.buf.WriteString(k) |
| 104 | w.buf.WriteString(v) |
| 105 | } |
| 106 | return w.FlushStream() |
| 107 | } |
| 108 | |
| 109 | func encodeSize(b []byte, size uint32) int { |
| 110 | if size > 127 { |
no test coverage detected