aboutsummaryrefslogtreecommitdiff
path: root/src/weed/sequence/sequence.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2013-02-10 03:25:35 -0800
committerChris Lu <chris.lu@gmail.com>2013-02-10 03:25:35 -0800
commitab6fb13ad795763ba7fc7c91696d2890be6da543 (patch)
tree3d956452bdcef7ea4b50457faff07df06f8d4346 /src/weed/sequence/sequence.go
parent1b6f53cdac9a44370f67276ede138f5cde8806c2 (diff)
downloadseaweedfs-ab6fb13ad795763ba7fc7c91696d2890be6da543.tar.xz
seaweedfs-ab6fb13ad795763ba7fc7c91696d2890be6da543.zip
avoid the "src" folder
Diffstat (limited to 'src/weed/sequence/sequence.go')
-rw-r--r--src/weed/sequence/sequence.go71
1 files changed, 0 insertions, 71 deletions
diff --git a/src/weed/sequence/sequence.go b/src/weed/sequence/sequence.go
deleted file mode 100644
index c85289468..000000000
--- a/src/weed/sequence/sequence.go
+++ /dev/null
@@ -1,71 +0,0 @@
-package sequence
-
-import (
- "encoding/gob"
- "log"
- "os"
- "path"
- "sync"
-)
-
-const (
- FileIdSaveInterval = 10000
-)
-
-type Sequencer interface {
- NextFileId(count int) (uint64, int)
-}
-type SequencerImpl struct {
- dir string
- fileName string
-
- volumeLock sync.Mutex
- sequenceLock sync.Mutex
-
- FileIdSequence uint64
- fileIdCounter uint64
-}
-
-func NewSequencer(dirname string, filename string) (m *SequencerImpl) {
- m = &SequencerImpl{dir: dirname, fileName: filename}
-
- seqFile, se := os.OpenFile(path.Join(m.dir, m.fileName+".seq"), os.O_RDONLY, 0644)
- if se != nil {
- m.FileIdSequence = FileIdSaveInterval
- log.Println("Setting file id sequence", m.FileIdSequence)
- } else {
- decoder := gob.NewDecoder(seqFile)
- defer seqFile.Close()
- decoder.Decode(&m.FileIdSequence)
- log.Println("Loading file id sequence", m.FileIdSequence, "=>", m.FileIdSequence+FileIdSaveInterval)
- //in case the server stops between intervals
- m.FileIdSequence += FileIdSaveInterval
- }
- return
-}
-
-//count should be 1 or more
-func (m *SequencerImpl) NextFileId(count int) (uint64, int) {
- if count <= 0 {
- return 0, 0
- }
- m.sequenceLock.Lock()
- defer m.sequenceLock.Unlock()
- if m.fileIdCounter < uint64(count) {
- m.fileIdCounter = FileIdSaveInterval
- m.FileIdSequence += FileIdSaveInterval
- m.saveSequence()
- }
- m.fileIdCounter = m.fileIdCounter - uint64(count)
- return m.FileIdSequence - m.fileIdCounter, count
-}
-func (m *SequencerImpl) saveSequence() {
- log.Println("Saving file id sequence", m.FileIdSequence, "to", path.Join(m.dir, m.fileName+".seq"))
- seqFile, e := os.OpenFile(path.Join(m.dir, m.fileName+".seq"), os.O_CREATE|os.O_WRONLY, 0644)
- if e != nil {
- log.Fatalf("Sequence File Save [ERROR] %s\n", e)
- }
- defer seqFile.Close()
- encoder := gob.NewEncoder(seqFile)
- encoder.Encode(m.FileIdSequence)
-}