package rep import ( "encoding/binary" "encoding/json" "git.crumpington.com/public/jldb/lib/errs" "net" "path/filepath" "time" ) // ---------------------------------------------------------------------------- func lockFilePath(rootDir string) string { return filepath.Join(rootDir, "lock") } func walRootDir(rootDir string) string { return filepath.Join(rootDir, "wal") } func stateFilePath(rootDir string) string { return filepath.Join(rootDir, "state") } // ---------------------------------------------------------------------------- func sendJSON( item any, conn net.Conn, timeout time.Duration, ) error { buf := bufPoolGet() defer bufPoolPut(buf) if err := json.NewEncoder(buf).Encode(item); err != nil { return errs.Unexpected.WithErr(err) } sizeBuf := make([]byte, 2) binary.LittleEndian.PutUint16(sizeBuf, uint16(buf.Len())) conn.SetWriteDeadline(time.Now().Add(timeout)) buffers := net.Buffers{sizeBuf, buf.Bytes()} if _, err := buffers.WriteTo(conn); err != nil { return errs.IO.WithErr(err) } return nil }