1
0
mirror of https://github.com/redis/go-redis.git synced 2025-07-29 17:41:15 +03:00

Add OpenTelemetryHook

This commit is contained in:
Vladimir Mihailenco
2020-06-09 16:29:53 +03:00
parent 0f875ec0f6
commit 8eed1e67ff
8 changed files with 265 additions and 98 deletions

View File

@ -1,7 +1,6 @@
package proto
import (
"bufio"
"encoding"
"fmt"
"io"
@ -11,16 +10,22 @@ import (
"github.com/go-redis/redis/v8/internal/util"
)
type writer interface {
io.Writer
io.ByteWriter
io.StringWriter
}
type Writer struct {
wr *bufio.Writer
writer
lenBuf []byte
numBuf []byte
}
func NewWriter(wr io.Writer) *Writer {
func NewWriter(wr writer) *Writer {
return &Writer{
wr: bufio.NewWriter(wr),
writer: wr,
lenBuf: make([]byte, 64),
numBuf: make([]byte, 64),
@ -28,19 +33,16 @@ func NewWriter(wr io.Writer) *Writer {
}
func (w *Writer) WriteArgs(args []interface{}) error {
err := w.wr.WriteByte(ArrayReply)
if err != nil {
if err := w.WriteByte(ArrayReply); err != nil {
return err
}
err = w.writeLen(len(args))
if err != nil {
if err := w.writeLen(len(args)); err != nil {
return err
}
for _, arg := range args {
err := w.writeArg(arg)
if err != nil {
if err := w.WriteArg(arg); err != nil {
return err
}
}
@ -51,11 +53,11 @@ func (w *Writer) WriteArgs(args []interface{}) error {
func (w *Writer) writeLen(n int) error {
w.lenBuf = strconv.AppendUint(w.lenBuf[:0], uint64(n), 10)
w.lenBuf = append(w.lenBuf, '\r', '\n')
_, err := w.wr.Write(w.lenBuf)
_, err := w.Write(w.lenBuf)
return err
}
func (w *Writer) writeArg(v interface{}) error {
func (w *Writer) WriteArg(v interface{}) error {
switch v := v.(type) {
case nil:
return w.string("")
@ -108,18 +110,15 @@ func (w *Writer) writeArg(v interface{}) error {
}
func (w *Writer) bytes(b []byte) error {
err := w.wr.WriteByte(StringReply)
if err != nil {
if err := w.WriteByte(StringReply); err != nil {
return err
}
err = w.writeLen(len(b))
if err != nil {
if err := w.writeLen(len(b)); err != nil {
return err
}
_, err = w.wr.Write(b)
if err != nil {
if _, err := w.Write(b); err != nil {
return err
}
@ -146,21 +145,8 @@ func (w *Writer) float(f float64) error {
}
func (w *Writer) crlf() error {
err := w.wr.WriteByte('\r')
if err != nil {
if err := w.WriteByte('\r'); err != nil {
return err
}
return w.wr.WriteByte('\n')
}
func (w *Writer) Buffered() int {
return w.wr.Buffered()
}
func (w *Writer) Reset(wr io.Writer) {
w.wr.Reset(wr)
}
func (w *Writer) Flush() error {
return w.wr.Flush()
return w.WriteByte('\n')
}