ddd1d92ff1
The idea here is to preserve the history of `dev` branch development and its code when merging with the `master`. Later this code could be moved into the masters code where appropriate.
42 lines
924 B
Go
42 lines
924 B
Go
package wire
|
|
|
|
import (
|
|
"io"
|
|
|
|
"github.com/CityOfZion/neo-go/pkg/wire/command"
|
|
"github.com/CityOfZion/neo-go/pkg/wire/util"
|
|
)
|
|
|
|
// Base is everything in the message except the payload
|
|
type Base struct {
|
|
Magic uint32
|
|
CMD command.Type
|
|
PayloadLength uint32
|
|
Checksum uint32
|
|
}
|
|
|
|
// DecodeBase will decode an io.Reader into a Base object
|
|
// Note, That there is no EncodeBase, As the header is implicitly inferred from the message on Encode To send
|
|
func (h *Base) DecodeBase(r io.Reader) (io.Reader, error) {
|
|
br := &util.BinReader{R: r}
|
|
|
|
br.Read(&h.Magic)
|
|
|
|
var cmd [12]byte
|
|
br.Read(&cmd)
|
|
h.CMD = command.Type(cmdByteArrayToString(cmd))
|
|
|
|
br.Read(&h.PayloadLength)
|
|
br.Read(&h.Checksum)
|
|
return br.R, br.Err
|
|
}
|
|
|
|
func cmdByteArrayToString(cmd [command.Size]byte) string {
|
|
buf := []byte{}
|
|
for i := 0; i < command.Size; i++ {
|
|
if cmd[i] != 0 {
|
|
buf = append(buf, cmd[i])
|
|
}
|
|
}
|
|
return string(buf)
|
|
}
|