MCPcopy Create free account
hub / github.com/distributedio/titan / BulkString

Method BulkString

encoding/resp/resp.go:213–245  ·  view source on GitHub ↗

BulkString parses a RESP bulkstring

()

Source from the content-addressed store, hash-verified

211
212//BulkString parses a RESP bulkstring
213func (r *Decoder) BulkString() (string, error) {
214 hdr, err := r.r.ReadBytes('\n')
215 if err != nil {
216 return "", err
217 }
218 l := len(hdr)
219 if l < len("$\r\n") {
220 return "", ErrInvalidProtocol
221 }
222 if hdr[l-2] != '\r' {
223 return "", ErrInvalidProtocol
224 }
225 if hdr[0] != '$' {
226 return "", ErrInvalidProtocol
227 }
228
229 if hdr[0] == '-' && len(hdr) == 2 && hdr[1] == '1' {
230 // handle $-1 and $-1 null replies.
231 return "", nil
232 }
233
234 remain, err := strconv.Atoi(string(hdr[1 : l-2]))
235 if err != nil || remain < 0 {
236 return "", ErrInvalidProtocol
237 }
238
239 body := make([]byte, remain+2) //end with \r\n
240 _, err = io.ReadFull(r.r, body)
241 if err != nil {
242 return "", ErrInvalidProtocol
243 }
244 return string(body[:len(body)-2]), nil
245}
246
247//Array parses a RESP array
248func (r *Decoder) Array() (int, error) {

Callers 2

TestArray_DecodeFunction · 0.95
TestBulkString_DecodeFunction · 0.95

Implementers 2

Encoderencoding/resp/resp.go
Decoderencoding/resp/resp.go

Calls 1

ReadBytesMethod · 0.80

Tested by 2

TestArray_DecodeFunction · 0.76
TestBulkString_DecodeFunction · 0.76