liuxiaolong
2020-11-18 911e6eb6a1a1ab5dd979a1917b79a5465da88181
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package boltcache
 
import (
    "bytes"
    "encoding/binary"
 
    "github.com/hashicorp/go-msgpack/codec"
)
 
// Decode reverses the encode operation on a byte slice input
func decodeMsgPack(buf []byte, out interface{}) error {
    r := bytes.NewBuffer(buf)
    hd := codec.MsgpackHandle{}
    dec := codec.NewDecoder(r, &hd)
    return dec.Decode(out)
}
 
// Encode writes an encoded object to a new bytes buffer
func encodeMsgPack(in interface{}) (*bytes.Buffer, error) {
    buf := bytes.NewBuffer(nil)
    hd := codec.MsgpackHandle{}
    enc := codec.NewEncoder(buf, &hd)
    err := enc.Encode(in)
    return buf, err
}
 
// Converts bytes to an integer
func bytesToUint64(b []byte) uint64 {
    return binary.BigEndian.Uint64(b)
}
 
// Converts a uint to a byte slice
func uint64ToBytes(u uint64) []byte {
    buf := make([]byte, 8)
    binary.BigEndian.PutUint64(buf, u)
    return buf
}