From b21a67bbe67ba479d09ae74206c00ced16272449 Mon Sep 17 00:00:00 2001 From: chrislu Date: Mon, 20 Dec 2021 11:53:48 -0800 Subject: [PATCH] add writer pattern object for later use --- weed/filesys/page_writer/writer_pattern.go | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 weed/filesys/page_writer/writer_pattern.go diff --git a/weed/filesys/page_writer/writer_pattern.go b/weed/filesys/page_writer/writer_pattern.go new file mode 100644 index 000000000..c7641c37f --- /dev/null +++ b/weed/filesys/page_writer/writer_pattern.go @@ -0,0 +1,31 @@ +package page_writer + +type WriterPattern struct { + isStreaming bool + lastWriteOffset int64 +} + +// For streaming write: only cache the first chunk +// For random write: fall back to temp file approach + +func NewWriterPattern() *WriterPattern { + return &WriterPattern{ + isStreaming: true, + lastWriteOffset: 0, + } +} + +func (rp *WriterPattern) MonitorWriteAt(offset int64, size int) { + if rp.lastWriteOffset > offset { + rp.isStreaming = false + } + rp.lastWriteOffset = offset +} + +func (rp *WriterPattern) IsStreamingMode() bool { + return rp.isStreaming +} + +func (rp *WriterPattern) IsRandomMode() bool { + return !rp.isStreaming +}