github.com/balzaczyy/golucene@v0.0.0-20151210033525-d0be9ee89713/core/store/baseDirectory.go (about) 1 package store 2 3 import () 4 5 type BaseDirectorySPI interface { 6 // DirectoryImplSPI 7 LockID() string 8 } 9 10 /* Base implementation for a concrete Directory. */ 11 type BaseDirectory struct { 12 spi BaseDirectorySPI 13 IsOpen bool 14 lockFactory LockFactory 15 } 16 17 func NewBaseDirectory(spi BaseDirectorySPI) *BaseDirectory { 18 assert(spi != nil) 19 return &BaseDirectory{ 20 // DirectoryImpl: NewDirectoryImpl(spi), 21 spi: spi, 22 IsOpen: true, 23 } 24 } 25 26 func (d *BaseDirectory) MakeLock(name string) Lock { 27 return d.lockFactory.Make(name) 28 } 29 30 func (d *BaseDirectory) ClearLock(name string) error { 31 if d.lockFactory != nil { 32 return d.lockFactory.Clear(name) 33 } 34 return nil 35 } 36 37 func (d *BaseDirectory) SetLockFactory(lockFactory LockFactory) { 38 assert(d != nil && lockFactory != nil) 39 d.lockFactory = lockFactory 40 d.lockFactory.SetLockPrefix(d.spi.LockID()) 41 } 42 43 func assert(ok bool) { 44 if !ok { 45 panic("assert fail") 46 } 47 } 48 49 func (d *BaseDirectory) LockFactory() LockFactory { 50 return d.lockFactory 51 } 52 53 func (d *BaseDirectory) EnsureOpen() { 54 if !d.IsOpen { 55 panic("this Directory is closed") 56 } 57 }