| 18 | } |
| 19 | |
| 20 | func EncodeMsgPack(payload interface{}) ([]byte, error) { |
| 21 | // Get buffer from pool |
| 22 | buf := bufferPool.Get().(*bytes.Buffer) |
| 23 | buf.Reset() // Clear previous contents |
| 24 | defer bufferPool.Put(buf) |
| 25 | |
| 26 | enc := msgpack.NewEncoder(buf) |
| 27 | enc.SetCustomStructTag("json") |
| 28 | |
| 29 | err := enc.Encode(payload) |
| 30 | if err != nil { |
| 31 | return nil, err |
| 32 | } |
| 33 | |
| 34 | // Must make a copy since we're returning buffer to pool |
| 35 | result := make([]byte, buf.Len()) |
| 36 | copy(result, buf.Bytes()) |
| 37 | return result, nil |
| 38 | } |
| 39 | |
| 40 | func DecodeMsgPack(pack []byte, target interface{}) error { |
| 41 | var buf bytes.Buffer |