| 54 | } |
| 55 | |
| 56 | func readMessageHeader(reader io.Reader) (messageHeader, error) { |
| 57 | msgh := messageHeader{} |
| 58 | hdrBytes := make([]byte, comm.UINT32_SIZE+common.MSG_CMD_LEN+comm.UINT32_SIZE+common.CHECKSUM_LEN) |
| 59 | |
| 60 | if _, err := io.ReadFull(reader, hdrBytes); err != nil { |
| 61 | return msgh, err |
| 62 | } |
| 63 | |
| 64 | source := comm.NewZeroCopySource(hdrBytes) |
| 65 | msgh.Magic, _ = source.NextUint32() |
| 66 | cmd, _ := source.NextBytes(common.MSG_CMD_LEN) |
| 67 | copy(msgh.CMD[:], cmd) |
| 68 | msgh.Length, _ = source.NextUint32() |
| 69 | checksum, _ := source.NextBytes(common.CHECKSUM_LEN) |
| 70 | copy(msgh.Checksum[:], checksum) |
| 71 | return msgh, nil |
| 72 | } |
| 73 | |
| 74 | func writeMessageHeaderInto(sink *comm.ZeroCopySink, msgh messageHeader) { |
| 75 | sink.WriteUint32(msgh.Magic) |