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  }