From 22c599abc18895f73e96095f35b71cf3357d41b4 Mon Sep 17 00:00:00 2001 From: Jeff Halter <868228+jhalter@users.noreply.github.com> Date: Wed, 28 Jul 2021 18:21:52 -0700 Subject: Move code to hotline dir --- hotline/file_header.go | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 hotline/file_header.go (limited to 'hotline/file_header.go') diff --git a/hotline/file_header.go b/hotline/file_header.go new file mode 100644 index 0000000..60c652e --- /dev/null +++ b/hotline/file_header.go @@ -0,0 +1,36 @@ +package hotline + +import ( + "encoding/binary" + "github.com/jhalter/mobius/concat" +) + +type FileHeader struct { + Size []byte // Total size of FileHeader payload + Type []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}, + FilePath: EncodeFilePath(fileName), + } + if isDir { + fh.Type = []byte{0x00, 0x01} + } + + encodedPathLen := uint16(len(fh.FilePath) + len(fh.Type)) + binary.BigEndian.PutUint16(fh.Size, encodedPathLen) + + return fh +} + +func (fh *FileHeader) Payload() []byte { + return concat.Slices( + fh.Size, + fh.Type, + fh.FilePath, + ) +} -- cgit