X-Git-Url: https://git.r.bdr.sh/rbdr/mobius/blobdiff_plain/c5d9af5aa4d9fb20316be45ab1b775bcf61bcad5..5cc444c89968dda9060d4e2f458b1babb9b603cd:/hotline/file_header.go?ds=sidebyside diff --git a/hotline/file_header.go b/hotline/file_header.go index 60c652e..71a1c00 100644 --- a/hotline/file_header.go +++ b/hotline/file_header.go @@ -2,35 +2,36 @@ package hotline import ( "encoding/binary" - "github.com/jhalter/mobius/concat" + "io" + "slices" ) type FileHeader struct { - Size []byte // Total size of FileHeader payload - Type []byte // 0 for file, 1 for dir - FilePath []byte // encoded file path + Size [2]byte // Total size of FileHeader payload + Type [2]byte // 0 for file, 1 for dir + FilePath []byte // encoded file path } func NewFileHeader(fileName string, isDir bool) FileHeader { fh := FileHeader{ - Size: make([]byte, 2), - Type: []byte{0x00, 0x00}, + Type: [2]byte{0x00, 0x00}, FilePath: EncodeFilePath(fileName), } if isDir { - fh.Type = []byte{0x00, 0x01} + fh.Type = [2]byte{0x00, 0x01} } encodedPathLen := uint16(len(fh.FilePath) + len(fh.Type)) - binary.BigEndian.PutUint16(fh.Size, encodedPathLen) + binary.BigEndian.PutUint16(fh.Size[:], encodedPathLen) return fh } -func (fh *FileHeader) Payload() []byte { - return concat.Slices( - fh.Size, - fh.Type, +func (fh *FileHeader) Read(p []byte) (int, error) { + return copy(p, slices.Concat( + fh.Size[:], + fh.Type[:], fh.FilePath, - ) + ), + ), io.EOF }