Skip to content

Commit

Permalink
more chain call and add bytes endian function (#46)
Browse files Browse the repository at this point in the history
* support chain call

* more bytes endian function
  • Loading branch information
laizy authored Jun 14, 2022
1 parent e9e2a5d commit bb1a008
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 17 deletions.
32 changes: 32 additions & 0 deletions utils/codec/codec.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package codec

import "encoding/binary"

type Serializable interface {
Serialization(sink *ZeroCopySink)
}
Expand All @@ -12,3 +14,33 @@ func SerializeToBytes(values ...Serializable) []byte {

return sink.Bytes()
}

func BytesLEToUint16(data []byte) uint16 {
return binary.LittleEndian.Uint16(data)
}

func Uint16ToBytesLE(val uint16) []byte {
data := make([]byte, 2)
binary.LittleEndian.PutUint16(data, val)
return data
}

func BytesLEToUint32(data []byte) uint32 {
return binary.LittleEndian.Uint32(data)
}

func Uint32ToBytesLE(val uint32) []byte {
data := make([]byte, 4)
binary.LittleEndian.PutUint32(data, val)
return data
}

func BytesLEToUint64(data []byte) uint64 {
return binary.LittleEndian.Uint64(data)
}

func Uint64ToBytesLE(val uint64) []byte {
data := make([]byte, 8)
binary.LittleEndian.PutUint64(data, val)
return data
}
39 changes: 22 additions & 17 deletions utils/codec/zero_copy_sink.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,31 +87,36 @@ func (self *ZeroCopySink) BackUp(n uint64) {
self.buf = self.buf[:l]
}

func (self *ZeroCopySink) WriteUint8(data uint8) {
func (self *ZeroCopySink) WriteUint8(data uint8) *ZeroCopySink {
buf := self.NextBytes(1)
buf[0] = data
return self
}

func (self *ZeroCopySink) WriteByte(c byte) {
func (self *ZeroCopySink) WriteByte(c byte) *ZeroCopySink {
self.WriteUint8(c)
return self
}

func (self *ZeroCopySink) WriteBool(data bool) {
func (self *ZeroCopySink) WriteBool(data bool) *ZeroCopySink {
if data {
self.WriteByte(1)
} else {
self.WriteByte(0)
}
return self
}

func (self *ZeroCopySink) WriteUint16(data uint16) {
func (self *ZeroCopySink) WriteUint16(data uint16) *ZeroCopySink {
buf := self.NextBytes(2)
binary.LittleEndian.PutUint16(buf, data)
return self
}

func (self *ZeroCopySink) WriteUint32(data uint32) {
func (self *ZeroCopySink) WriteUint32(data uint32) *ZeroCopySink {
buf := self.NextBytes(4)
binary.LittleEndian.PutUint32(buf, data)
return self
}

func (self *ZeroCopySink) WriteUint64(data uint64) *ZeroCopySink {
Expand Down Expand Up @@ -139,28 +144,28 @@ func (self *ZeroCopySink) WriteUint64BE(data uint64) *ZeroCopySink {
return self
}

func (self *ZeroCopySink) WriteInt64(data int64) {
self.WriteUint64(uint64(data))
func (self *ZeroCopySink) WriteInt64(data int64) *ZeroCopySink {
return self.WriteUint64(uint64(data))
}

func (self *ZeroCopySink) WriteInt32(data int32) {
self.WriteUint32(uint32(data))
func (self *ZeroCopySink) WriteInt32(data int32) *ZeroCopySink {
return self.WriteUint32(uint32(data))
}

func (self *ZeroCopySink) WriteInt16(data int16) {
self.WriteUint16(uint16(data))
func (self *ZeroCopySink) WriteInt16(data int16) *ZeroCopySink {
return self.WriteUint16(uint16(data))
}

func (self *ZeroCopySink) WriteInt64BE(data int64) {
self.WriteUint64BE(uint64(data))
func (self *ZeroCopySink) WriteInt64BE(data int64) *ZeroCopySink {
return self.WriteUint64BE(uint64(data))
}

func (self *ZeroCopySink) WriteInt32BE(data int32) {
self.WriteUint32BE(uint32(data))
func (self *ZeroCopySink) WriteInt32BE(data int32) *ZeroCopySink {
return self.WriteUint32BE(uint32(data))
}

func (self *ZeroCopySink) WriteInt16BE(data int16) {
self.WriteUint16BE(uint16(data))
func (self *ZeroCopySink) WriteInt16BE(data int16) *ZeroCopySink {
return self.WriteUint16BE(uint16(data))
}

func (self *ZeroCopySink) WriteVarBytes(data []byte) (size uint64) {
Expand Down

0 comments on commit bb1a008

Please sign in to comment.