本文整理匯總了Golang中github.com/netflix/rend/metrics.IncCounterBy函數的典型用法代碼示例。如果您正苦於以下問題:Golang IncCounterBy函數的具體用法?Golang IncCounterBy怎麽用?Golang IncCounterBy使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了IncCounterBy函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: simpleCmdLocal
func simpleCmdLocal(rw *bufio.ReadWriter) error {
if err := rw.Flush(); err != nil {
return err
}
resHeader, err := binprot.ReadResponseHeader(rw)
if err != nil {
return err
}
defer binprot.PutResponseHeader(resHeader)
err = binprot.DecodeError(resHeader)
if err != nil {
n, ioerr := rw.Discard(int(resHeader.TotalBodyLength))
metrics.IncCounterBy(common.MetricBytesReadLocal, uint64(n))
if ioerr != nil {
return ioerr
}
return err
}
// Read in the message bytes from the body
n, err := rw.Discard(int(resHeader.TotalBodyLength))
metrics.IncCounterBy(common.MetricBytesReadLocal, uint64(n))
return err
}
示例2: Get
func (t TextResponder) Get(response common.GetResponse) error {
if response.Miss {
// A miss is a no-op in the text world
return nil
}
// Write data out to client
// [VALUE <key> <flags> <bytes>\r\n
// <data block>\r\n]*
// END\r\n
n, err := fmt.Fprintf(t.writer, "VALUE %s %d %d\r\n", response.Key, response.Flags, len(response.Data))
metrics.IncCounterBy(common.MetricBytesWrittenRemote, uint64(n))
if err != nil {
return err
}
n, err = t.writer.Write(response.Data)
metrics.IncCounterBy(common.MetricBytesWrittenRemote, uint64(n))
if err != nil {
return err
}
n, err = t.writer.WriteString("\r\n")
metrics.IncCounterBy(common.MetricBytesWrittenRemote, uint64(n))
if err != nil {
return err
}
t.writer.Flush()
return nil
}
示例3: handleSetCommon
func (h Handler) handleSetCommon(cmd common.SetRequest) error {
// TODO: should there be a unique flags value for regular data?
// Write value
h.rw.Write(cmd.Data)
metrics.IncCounterBy(common.MetricBytesWrittenLocal, uint64(len(cmd.Data)))
if err := h.rw.Flush(); err != nil {
return err
}
// Read server's response
resHeader, err := readResponseHeader(h.rw.Reader)
if err != nil {
// Discard response body
n, ioerr := h.rw.Discard(int(resHeader.TotalBodyLength))
metrics.IncCounterBy(common.MetricBytesReadLocal, uint64(n))
if ioerr != nil {
return ioerr
}
// For Add and Replace, the error here will be common.ErrKeyExists or common.ErrKeyNotFound
// respectively. For each, this is the right response to send to the requestor. The error
// here is overloaded because it would signal a true error for sets, but a normal "error"
// response for Add and Replace.
return err
}
return nil
}
示例4: Get
func (l *L1OnlyOrca) Get(req common.GetRequest) error {
metrics.IncCounter(MetricCmdGet)
metrics.IncCounterBy(MetricCmdGetKeys, uint64(len(req.Keys)))
//debugString := "get"
//for _, k := range req.Keys {
// debugString += " "
// debugString += string(k)
//}
//println(debugString)
metrics.IncCounter(MetricCmdGetL1)
metrics.IncCounterBy(MetricCmdGetKeysL1, uint64(len(req.Keys)))
resChan, errChan := l.l1.Get(req)
var err error
// Read all the responses back from l.l1.
// The contract is that the resChan will have GetResponse's for get hits and misses,
// and the errChan will have any other errors, such as an out of memory error from
// memcached. If any receive happens from errChan, there will be no more responses
// from resChan.
for {
select {
case res, ok := <-resChan:
if !ok {
resChan = nil
} else {
if res.Miss {
metrics.IncCounter(MetricCmdGetMissesL1)
metrics.IncCounter(MetricCmdGetMisses)
} else {
metrics.IncCounter(MetricCmdGetHits)
metrics.IncCounter(MetricCmdGetHitsL1)
}
l.res.Get(res)
}
case getErr, ok := <-errChan:
if !ok {
errChan = nil
} else {
metrics.IncCounter(MetricCmdGetErrors)
metrics.IncCounter(MetricCmdGetErrorsL1)
err = getErr
}
}
if resChan == nil && errChan == nil {
break
}
}
if err == nil {
l.res.GetEnd(req.NoopOpaque, req.NoopEnd)
}
return err
}
示例5: realHandleSet
func (h Handler) realHandleSet(cmd common.SetRequest, reqType common.RequestType) error {
// TODO: should there be a unique flags value for regular data?
// Write command header
switch reqType {
case common.RequestSet:
if err := binprot.WriteSetCmd(h.rw.Writer, cmd.Key, cmd.Flags, cmd.Exptime, uint32(len(cmd.Data))); err != nil {
return err
}
case common.RequestAdd:
if err := binprot.WriteAddCmd(h.rw.Writer, cmd.Key, cmd.Flags, cmd.Exptime, uint32(len(cmd.Data))); err != nil {
return err
}
case common.RequestReplace:
if err := binprot.WriteReplaceCmd(h.rw.Writer, cmd.Key, cmd.Flags, cmd.Exptime, uint32(len(cmd.Data))); err != nil {
return err
}
default:
// I know. It's all wrong. By rights we shouldn't even be here. But we are.
panic("Unrecognized request type in realHandleSet!")
}
// Write value
h.rw.Write(cmd.Data)
metrics.IncCounterBy(common.MetricBytesWrittenLocal, uint64(len(cmd.Data)))
if err := h.rw.Flush(); err != nil {
return err
}
// Read server's response
resHeader, err := readResponseHeader(h.rw.Reader)
if err != nil {
// Discard response body
n, ioerr := h.rw.Discard(int(resHeader.TotalBodyLength))
metrics.IncCounterBy(common.MetricBytesReadLocal, uint64(n))
if ioerr != nil {
return ioerr
}
// For Add and Replace, the error here will be common.ErrKeyExists or common.ErrKeyNotFound
// respectively. For each, this is the right response to send to the requestor. The error
// here is overloaded because it would signal a true error for sets, but a normal "error"
// response for Add and Replace.
return err
}
return nil
}
示例6: writeSuccessResponseHeader
func writeSuccessResponseHeader(w *bufio.Writer, opcode uint8, keyLength, extraLength,
totalBodyLength int, opaque uint32, flush bool) error {
header := resHeadPool.Get().(ResponseHeader)
header.Magic = MagicResponse
header.Opcode = opcode
header.KeyLength = uint16(keyLength)
header.ExtraLength = uint8(extraLength)
header.DataType = uint8(0)
header.Status = StatusSuccess
header.TotalBodyLength = uint32(totalBodyLength)
header.OpaqueToken = opaque
header.CASToken = uint64(0)
if err := writeResponseHeader(w, header); err != nil {
resHeadPool.Put(header)
return err
}
if flush {
if err := w.Flush(); err != nil {
resHeadPool.Put(header)
return err
}
}
metrics.IncCounterBy(common.MetricBytesWrittenRemote, resHeaderLen)
resHeadPool.Put(header)
return nil
}
示例7: writeErrorResponseHeader
func writeErrorResponseHeader(w *bufio.Writer, opcode uint8, status uint16, opaque uint32) error {
header := resHeadPool.Get().(ResponseHeader)
header.Magic = MagicResponse
header.Opcode = opcode
header.KeyLength = uint16(0)
header.ExtraLength = uint8(0)
header.DataType = uint8(0)
header.Status = status
header.TotalBodyLength = uint32(0)
header.OpaqueToken = opaque
header.CASToken = uint64(0)
if err := writeResponseHeader(w, header); err != nil {
resHeadPool.Put(header)
return err
}
if err := w.Flush(); err != nil {
resHeadPool.Put(header)
return err
}
metrics.IncCounterBy(common.MetricBytesWrittenRemote, resHeaderLen)
resHeadPool.Put(header)
return nil
}
示例8: appendPrependRequest
func appendPrependRequest(r io.Reader, reqHeader RequestHeader, reqType common.RequestType, quiet bool, start uint64) (common.SetRequest, common.RequestType, uint64, error) {
// key, value
key, err := readString(r, reqHeader.KeyLength)
if err != nil {
log.Println("Error reading key")
return common.SetRequest{}, reqType, start, err
}
realLength := reqHeader.TotalBodyLength - uint32(reqHeader.KeyLength)
// Read in the body of the set request
dataBuf := make([]byte, realLength)
n, err := io.ReadAtLeast(r, dataBuf, int(realLength))
metrics.IncCounterBy(common.MetricBytesReadRemote, uint64(n))
if err != nil {
return common.SetRequest{}, reqType, start, err
}
return common.SetRequest{
Quiet: quiet,
Key: key,
Flags: 0,
Exptime: 0,
Opaque: reqHeader.OpaqueToken,
Data: dataBuf,
}, reqType, start, nil
}
示例9: Version
func (b BinaryResponder) Version(opaque uint32) error {
if err := writeSuccessResponseHeader(b.writer, OpcodeVersion, 0, 0, len(common.VersionString), opaque, false); err != nil {
return err
}
n, _ := b.writer.WriteString(common.VersionString)
metrics.IncCounterBy(common.MetricBytesWrittenRemote, uint64(n))
return b.writer.Flush()
}
示例10: setRequest
func setRequest(r *bufio.Reader, clParts []string, reqType common.RequestType, start uint64) (common.SetRequest, common.RequestType, uint64, error) {
// sanity check
if len(clParts) != 5 {
return common.SetRequest{}, reqType, start, common.ErrBadRequest
}
key := []byte(clParts[1])
flags, err := strconv.ParseUint(strings.TrimSpace(clParts[2]), 10, 32)
if err != nil {
log.Printf("Error parsing flags for set/add/replace command: %s\n", err.Error())
return common.SetRequest{}, reqType, start, common.ErrBadFlags
}
exptime, err := strconv.ParseUint(strings.TrimSpace(clParts[3]), 10, 32)
if err != nil {
log.Printf("Error parsing ttl for set/add/replace command: %s\n", err.Error())
return common.SetRequest{}, reqType, start, common.ErrBadExptime
}
length, err := strconv.ParseUint(strings.TrimSpace(clParts[4]), 10, 32)
if err != nil {
log.Printf("Error parsing length for set/add/replace command: %s\n", err.Error())
return common.SetRequest{}, reqType, start, common.ErrBadLength
}
// Read in data
dataBuf := make([]byte, length)
n, err := io.ReadAtLeast(r, dataBuf, int(length))
metrics.IncCounterBy(common.MetricBytesReadRemote, uint64(n))
if err != nil {
return common.SetRequest{}, reqType, start, common.ErrInternal
}
// Consume the last two bytes "\r\n"
r.ReadString(byte('\n'))
metrics.IncCounterBy(common.MetricBytesReadRemote, 2)
return common.SetRequest{
Key: key,
Flags: uint32(flags),
Exptime: uint32(exptime),
Opaque: uint32(0),
Data: dataBuf,
}, reqType, start, nil
}
示例11: writeMetadata
func writeMetadata(w io.Writer, md metadata) error {
buf := make([]byte, metadataSize-tokenSize)
binary.BigEndian.PutUint32(buf[0:4], md.Length)
binary.BigEndian.PutUint32(buf[4:8], md.OrigFlags)
binary.BigEndian.PutUint32(buf[8:12], md.NumChunks)
binary.BigEndian.PutUint32(buf[12:16], md.ChunkSize)
n, err := w.Write(buf)
metrics.IncCounterBy(common.MetricBytesWrittenLocal, uint64(n))
if err != nil {
return err
}
n, err = w.Write(md.Token[:])
metrics.IncCounterBy(common.MetricBytesWrittenLocal, uint64(n))
return err
}
示例12: resp
func (t TextResponder) resp(s string) error {
n, err := fmt.Fprintf(t.writer, s+"\r\n")
metrics.IncCounterBy(common.MetricBytesWrittenRemote, uint64(n))
if err != nil {
return err
}
return t.writer.Flush()
}
示例13: getLocal
func getLocal(rw *bufio.ReadWriter, readExp bool) (data []byte, flags, exp uint32, err error) {
if err := rw.Flush(); err != nil {
return nil, 0, 0, err
}
resHeader, err := binprot.ReadResponseHeader(rw)
if err != nil {
return nil, 0, 0, err
}
defer binprot.PutResponseHeader(resHeader)
err = binprot.DecodeError(resHeader)
if err != nil {
n, ioerr := rw.Discard(int(resHeader.TotalBodyLength))
metrics.IncCounterBy(common.MetricBytesReadLocal, uint64(n))
if ioerr != nil {
return nil, 0, 0, ioerr
}
return nil, 0, 0, err
}
var serverFlags uint32
binary.Read(rw, binary.BigEndian, &serverFlags)
metrics.IncCounterBy(common.MetricBytesReadLocal, 4)
var serverExp uint32
if readExp {
binary.Read(rw, binary.BigEndian, &serverExp)
metrics.IncCounterBy(common.MetricBytesReadLocal, 4)
}
// total body - key - extra
dataLen := resHeader.TotalBodyLength - uint32(resHeader.KeyLength) - uint32(resHeader.ExtraLength)
buf := make([]byte, dataLen)
// Read in value
n, err := io.ReadAtLeast(rw, buf, int(dataLen))
metrics.IncCounterBy(common.MetricBytesReadLocal, uint64(n))
if err != nil {
return nil, 0, 0, err
}
return buf, serverFlags, serverExp, nil
}
示例14: readString
func readString(r io.Reader, l uint16) ([]byte, error) {
buf := make([]byte, l)
n, err := io.ReadAtLeast(r, buf, int(l))
metrics.IncCounterBy(common.MetricBytesReadRemote, uint64(n))
if err != nil {
return nil, err
}
return buf, nil
}
示例15: getMetadataCommon
func getMetadataCommon(rw *bufio.ReadWriter) (metadata, error) {
if err := rw.Flush(); err != nil {
return emptyMeta, err
}
resHeader, err := binprot.ReadResponseHeader(rw)
if err != nil {
return emptyMeta, err
}
defer binprot.PutResponseHeader(resHeader)
err = binprot.DecodeError(resHeader)
if err != nil {
// read in the message "Not found" after a miss
n, ioerr := rw.Discard(int(resHeader.TotalBodyLength))
metrics.IncCounterBy(common.MetricBytesReadLocal, uint64(n))
if ioerr != nil {
return emptyMeta, ioerr
}
return emptyMeta, err
}
// we currently do nothing with the flags
//buf := make([]byte, 4)
//n, err := io.ReadAtLeast(rw, buf, 4)
//metrics.IncCounterBy(common.MetricBytesReadLocal, uint64(n))
//if err != nil {
// return emptyMeta, err
//}
//serverFlags := binary.BigEndian.Uint32(buf)
// instead of reading and parsing flags, just discard
rw.Discard(4)
metrics.IncCounterBy(common.MetricBytesReadLocal, 4)
metaData, err := readMetadata(rw)
if err != nil {
return emptyMeta, err
}
return metaData, nil
}