本文整理汇总了Golang中github.com/reborndb/go/errors.Trace函数的典型用法代码示例。如果您正苦于以下问题:Golang Trace函数的具体用法?Golang Trace怎么用?Golang Trace使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Trace函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: EncodeObject
func (e *Encoder) EncodeObject(db uint32, key []byte, expireat uint64, obj interface{}) error {
o, ok := obj.(objectEncoder)
if !ok {
return errors.New("unsupported object type")
}
if e.db == -1 || uint32(e.db) != db {
e.db = int64(db)
if err := e.enc.EncodeDatabase(int(db)); err != nil {
return errors.Trace(err)
}
}
if expireat != 0 {
if err := e.enc.EncodeExpiry(expireat); err != nil {
return errors.Trace(err)
}
}
if err := o.encodeType(e.enc); err != nil {
return err
}
if err := e.enc.EncodeString(key); err != nil {
return errors.Trace(err)
}
if err := o.encodeValue(e.enc); err != nil {
return err
}
return nil
}
开发者ID:shitfSign,项目名称:qdb,代码行数:27,代码来源:encoder.go
示例2: decodeRequest
func (d *decoder) decodeRequest() (Resp, error) {
t, err := d.decodeType()
if err != nil {
return nil, err
}
switch t {
default:
if !isLetter(byte(t)) {
return nil, errors.Trace(ErrBadRespType)
}
// may be it's telnet text format
d.r.UnreadByte()
t, err := d.decodeText()
if err != nil {
return nil, err
}
items := strings.Fields(t)
resp := &Array{}
for _, item := range items {
resp.AppendBulkBytes([]byte(item))
}
return resp, nil
case TypeString, TypeError, TypeInt, TypeBulkBytes:
return nil, errors.Trace(ErrBadRespType)
case TypePing:
return NewPing(), nil
case TypeArray:
resp := &Array{}
resp.Value, err = d.decodeArray()
return resp, err
}
}
开发者ID:shitfSign,项目名称:qdb,代码行数:35,代码来源:decoder.go
示例3: encodeResp
func (e *encoder) encodeResp(r Resp) error {
switch x := r.(type) {
default:
return errors.Trace(ErrBadRespType)
case *String:
if err := e.encodeType(TypeString); err != nil {
return err
}
return e.encodeText(x.Value)
case *Error:
if err := e.encodeType(TypeError); err != nil {
return err
}
return e.encodeText(x.Value)
case *Int:
if err := e.encodeType(TypeInt); err != nil {
return err
}
return e.encodeInt(x.Value)
case *BulkBytes:
if err := e.encodeType(TypeBulkBytes); err != nil {
return err
}
return e.encodeBulkBytes(x.Value)
case *Array:
if err := e.encodeType(TypeArray); err != nil {
return err
}
return e.encodeArray(x.Value)
case Ping:
return errors.Trace(e.w.WriteByte('\n'))
}
}
开发者ID:shitfSign,项目名称:qdb,代码行数:33,代码来源:encoder.go
示例4: encodeText
func (e *encoder) encodeText(s string) error {
if _, err := e.w.WriteString(s); err != nil {
return errors.Trace(err)
}
if _, err := e.w.WriteString("\r\n"); err != nil {
return errors.Trace(err)
}
return nil
}
开发者ID:shitfSign,项目名称:qdb,代码行数:9,代码来源:encoder.go
示例5: decodeText
func (d *decoder) decodeText() (string, error) {
b, err := d.r.ReadBytes('\n')
if err != nil {
return "", errors.Trace(err)
}
if n := len(b) - 2; n < 0 || b[n] != '\r' {
return "", errors.Trace(ErrBadRespEnd)
} else {
return string(b[:n]), nil
}
}
开发者ID:shitfSign,项目名称:qdb,代码行数:11,代码来源:decoder.go
示例6: encodeValue
func (o Set) encodeValue(enc *rdb.Encoder) error {
if err := enc.EncodeLength(uint32(len(o))); err != nil {
return errors.Trace(err)
}
for _, e := range o {
if err := enc.EncodeString(e); err != nil {
return errors.Trace(err)
}
}
return nil
}
开发者ID:shitfSign,项目名称:qdb,代码行数:11,代码来源:encoder.go
示例7: encodeBulkBytes
func (e *encoder) encodeBulkBytes(b []byte) error {
if b == nil {
return e.encodeInt(-1)
} else {
if err := e.encodeInt(int64(len(b))); err != nil {
return err
}
if _, err := e.w.Write(b); err != nil {
return errors.Trace(err)
}
if _, err := e.w.WriteString("\r\n"); err != nil {
return errors.Trace(err)
}
return nil
}
}
开发者ID:shitfSign,项目名称:qdb,代码行数:16,代码来源:encoder.go
示例8: DecodeDump
func DecodeDump(p []byte) (interface{}, error) {
d := &decoder{}
if err := rdb.DecodeDump(p, 0, nil, 0, d); err != nil {
return nil, errors.Trace(err)
}
return d.obj, d.err
}
开发者ID:shitfSign,项目名称:qdb,代码行数:7,代码来源:decoder.go
示例9: decodeResp
func (d *decoder) decodeResp() (Resp, error) {
t, err := d.decodeType()
if err != nil {
return nil, err
}
switch t {
default:
return nil, errors.Trace(ErrBadRespType)
case TypeString:
resp := &String{}
resp.Value, err = d.decodeText()
return resp, err
case TypeError:
resp := &Error{}
resp.Value, err = d.decodeText()
return resp, err
case TypeInt:
resp := &Int{}
resp.Value, err = d.decodeInt()
return resp, err
case TypeBulkBytes:
resp := &BulkBytes{}
resp.Value, err = d.decodeBulkBytes()
return resp, err
case TypeArray:
resp := &Array{}
resp.Value, err = d.decodeArray()
return resp, err
case TypePing:
return NewPing(), nil
}
}
开发者ID:shitfSign,项目名称:qdb,代码行数:32,代码来源:decoder.go
示例10: decodeType
func (d *decoder) decodeType() (RespType, error) {
if b, err := d.r.ReadByte(); err != nil {
return 0, errors.Trace(err)
} else {
return RespType(b), nil
}
}
开发者ID:shitfSign,项目名称:qdb,代码行数:7,代码来源:decoder.go
示例11: OpenFile
func OpenFile(fileName string, exclusive bool) (*os.File, error) {
flag := os.O_CREATE | os.O_RDWR | os.O_TRUNC
if exclusive {
flag |= os.O_EXCL
}
f, err := os.OpenFile(fileName, flag, 0600)
return f, errors.Trace(err)
}
开发者ID:shitfSign,项目名称:qdb,代码行数:8,代码来源:pipe.go
示例12: Parse
func Parse(s string) (int64, error) {
if !BytesizeRegexp.MatchString(s) {
return 0, errors.Trace(ErrBadBytesize)
}
subs := BytesizeRegexp.FindStringSubmatch(s)
if len(subs) != 3 {
return 0, errors.Trace(ErrBadBytesize)
}
size := int64(0)
switch strings.ToUpper(string(subs[2])) {
case "B", "":
size = 1
case "KB", "K":
size = KB
case "MB", "M":
size = MB
case "GB", "G":
size = GB
case "TB", "T":
size = TB
case "PB", "P":
size = PB
default:
return 0, errors.Trace(ErrBadBytesizeUnit)
}
text := subs[1]
if digitsRegexp.MatchString(text) {
n, err := strconv.ParseInt(text, 10, 64)
if err != nil {
return 0, errors.Trace(ErrBadBytesize)
}
size *= n
} else {
n, err := strconv.ParseFloat(text, 64)
if err != nil {
return 0, errors.Trace(ErrBadBytesize)
}
size = int64(float64(size) * n)
}
return size, nil
}
开发者ID:shitfSign,项目名称:qdb,代码行数:44,代码来源:bytesize.go
示例13: Write
func (w *simpleWriter) Write(b []byte) (int, error) {
if w.err != nil {
return 0, w.err
}
n, err := w.w.Write(b)
if err != nil {
w.err = errors.Trace(err)
}
return n, w.err
}
开发者ID:shitfSign,项目名称:qdb,代码行数:10,代码来源:simpleio.go
示例14: decodeBulkBytes
func (d *decoder) decodeBulkBytes() ([]byte, error) {
n, err := d.decodeInt()
if err != nil {
return nil, err
}
if n < -1 {
return nil, errors.Trace(ErrBadRespBytesLen)
} else if n == -1 {
return nil, nil
}
b := make([]byte, n+2)
if _, err := ioutils.ReadFull(d.r, b); err != nil {
return nil, errors.Trace(err)
}
if b[n] != '\r' || b[n+1] != '\n' {
return nil, errors.Trace(ErrBadRespEnd)
}
return b[:n], nil
}
开发者ID:shitfSign,项目名称:qdb,代码行数:19,代码来源:decoder.go
示例15: Read
func (r *simpleReader) Read(b []byte) (int, error) {
if r.err != nil {
return 0, r.err
}
n, err := r.r.Read(b)
if err != nil {
r.err = errors.Trace(err)
}
return n, r.err
}
开发者ID:shitfSign,项目名称:qdb,代码行数:10,代码来源:simpleio.go
示例16: decodeInt
func (d *decoder) decodeInt() (int64, error) {
b, err := d.decodeText()
if err != nil {
return 0, err
}
if n, err := strconv.ParseInt(string(b), 10, 64); err != nil {
return 0, errors.Trace(err)
} else {
return n, nil
}
}
开发者ID:shitfSign,项目名称:qdb,代码行数:11,代码来源:decoder.go
示例17: WClose
func (p *pipe) WClose(err error) error {
if err == nil {
err = errors.Trace(io.EOF)
}
p.mu.Lock()
defer p.mu.Unlock()
if p.werr == nil {
p.werr = err
}
p.rwait.Signal()
p.wwait.Signal()
return p.store.wclose()
}
开发者ID:shitfSign,项目名称:qdb,代码行数:13,代码来源:pipe.go
示例18: Header
func (l *Loader) Header() error {
header := make([]byte, 9)
if err := l.readFull(header); err != nil {
return err
}
if !bytes.Equal(header[:5], []byte("REDIS")) {
return errors.New("verify magic string, invalid file format")
}
if version, err := strconv.ParseInt(string(header[5:]), 10, 64); err != nil {
return errors.Trace(err)
} else if version <= 0 || version > Version {
return errors.Errorf("verify version, invalid RDB version number %d", version)
}
return nil
}
开发者ID:shitfSign,项目名称:qdb,代码行数:15,代码来源:loader.go
示例19: EncodeDump
func EncodeDump(obj interface{}) ([]byte, error) {
o, ok := obj.(objectEncoder)
if !ok {
return nil, errors.New("unsupported object type")
}
var b bytes.Buffer
enc := rdb.NewEncoder(&b)
if err := o.encodeType(enc); err != nil {
return nil, err
}
if err := o.encodeValue(enc); err != nil {
return nil, err
}
if err := enc.EncodeDumpFooter(); err != nil {
return nil, errors.Trace(err)
}
return b.Bytes(), nil
}
开发者ID:shitfSign,项目名称:qdb,代码行数:18,代码来源:encoder.go
示例20: decodeArray
func (d *decoder) decodeArray() ([]Resp, error) {
n, err := d.decodeInt()
if err != nil {
return nil, err
}
if n < -1 {
return nil, errors.Trace(ErrBadRespArrayLen)
} else if n == -1 {
return nil, nil
}
a := make([]Resp, n)
for i := 0; i < len(a); i++ {
if a[i], err = d.decodeResp(); err != nil {
return nil, err
}
}
return a, nil
}
开发者ID:shitfSign,项目名称:qdb,代码行数:18,代码来源:decoder.go
注:本文中的github.com/reborndb/go/errors.Trace函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论