MCPcopy
hub / github.com/bradfitz/gomemcache / populateOne

Method populateOne

memcache/memcache.go:665–704  ·  view source on GitHub ↗
(rw *bufio.ReadWriter, verb string, item *Item)

Source from the content-addressed store, hash-verified

663}
664
665func (c *Client) populateOne(rw *bufio.ReadWriter, verb string, item *Item) error {
666 if !legalKey(item.Key) {
667 return ErrMalformedKey
668 }
669 var err error
670 if verb == "cas" {
671 _, err = fmt.Fprintf(rw, "%s %s %d %d %d %d\r\n",
672 verb, item.Key, item.Flags, item.Expiration, len(item.Value), item.CasID)
673 } else {
674 _, err = fmt.Fprintf(rw, "%s %s %d %d %d\r\n",
675 verb, item.Key, item.Flags, item.Expiration, len(item.Value))
676 }
677 if err != nil {
678 return err
679 }
680 if _, err = rw.Write(item.Value); err != nil {
681 return err
682 }
683 if _, err := rw.Write(crlf); err != nil {
684 return err
685 }
686 if err := rw.Flush(); err != nil {
687 return err
688 }
689 line, err := rw.ReadSlice('\n')
690 if err != nil {
691 return err
692 }
693 switch {
694 case bytes.Equal(line, resultStored):
695 return nil
696 case bytes.Equal(line, resultNotStored):
697 return ErrNotStored
698 case bytes.Equal(line, resultExists):
699 return ErrCASConflict
700 case bytes.Equal(line, resultNotFound):
701 return ErrCacheMiss
702 }
703 return fmt.Errorf("memcache: unexpected response line from %q: %q", verb, string(line))
704}
705
706func writeReadLine(rw *bufio.ReadWriter, format string, args ...interface{}) ([]byte, error) {
707 _, err := fmt.Fprintf(rw, format, args...)

Callers 6

setMethod · 0.95
addMethod · 0.95
replaceMethod · 0.95
appendMethod · 0.95
prependMethod · 0.95
casMethod · 0.95

Calls 1

legalKeyFunction · 0.85

Tested by

no test coverage detected