diff --git a/common/block.go b/common/block.go index 36e2b0b..266ce3c 100644 --- a/common/block.go +++ b/common/block.go @@ -1,7 +1,31 @@ package common -// Block data from Minetest database. -type Block struct { - Coord Coord - Data []byte -} +import ( + "errors" +) + +// Error returned if a Producer has run to its end. +var ErrNoMoreBlocks = errors.New("No more blocks.") + +type ( + // Block data from Minetest database. + Block struct { + Coord Coord + Data []byte + } + // BlockProducer is used to over a existing Minetest database + // and return its content block by block. + BlockProducer interface { + // error is ErrNoMoreBlocks if it run out of blocks. + Next(*Block) error + // Closes the open database connections. + Close() error + } + + // BlockConsumer is used to store blocks in a new Minetest database. + BlockConsumer interface { + Consume(*Block) error + // Closes the open database connections. + Close() error + } +) diff --git a/interleaver/interfaces.go b/interleaver/interfaces.go deleted file mode 100644 index 063668f..0000000 --- a/interleaver/interfaces.go +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2014 by Sascha L. Teichmann -// Use of this source code is governed by the MIT license -// that can be found in the LICENSE file. - -package main - -import ( - "errors" - - "bitbucket.org/s_l_teichmann/mtredisalize/common" -) - -// Error returned if a Producer has run to its end. -var ErrNoMoreBlocks = errors.New("No more blocks.") - -type ( - // BlockProducer is used to over a existing Minetest database - // and return its content block by block. - BlockProducer interface { - // error is ErrNoMoreBlocks if it run out of blocks. - Next(*common.Block) error - // Closes the open database connections. - Close() error - } - - // BlockConsumer is used to store blocks in a new Minetest database. - BlockConsumer interface { - Consume(*common.Block) error - // Closes the open database connections. - Close() error - } -) diff --git a/interleaver/leveldb.go b/interleaver/leveldb.go index 82a7e06..5ade27d 100644 --- a/interleaver/leveldb.go +++ b/interleaver/leveldb.go @@ -77,12 +77,12 @@ func (ldbp *LevelDBBlockProducer) Close() error { func (ldbp *LevelDBBlockProducer) Next(block *common.Block) (err error) { if ldbp.iterator == nil { - err = ErrNoMoreBlocks + err = common.ErrNoMoreBlocks return } if !ldbp.iterator.Valid() { if err = ldbp.iterator.GetError(); err == nil { - err = ErrNoMoreBlocks + err = common.ErrNoMoreBlocks } ldbp.iterator.Close() ldbp.iterator = nil diff --git a/interleaver/main.go b/interleaver/main.go index f1e940b..e099103 100644 --- a/interleaver/main.go +++ b/interleaver/main.go @@ -49,7 +49,7 @@ func selectKeyEncoder(interleaved bool) common.KeyEncoder { return common.EncodeStringToBytes } -func copyProducerToConsumer(producer BlockProducer, consumer BlockConsumer) error { +func copyProducerToConsumer(producer common.BlockProducer, consumer common.BlockConsumer) error { blocks := make(chan *common.Block) done := make(chan struct{}) @@ -62,7 +62,7 @@ func copyProducerToConsumer(producer BlockProducer, consumer BlockConsumer) erro for { block := pool.Get().(*common.Block) if err := producer.Next(block); err != nil { - if err != ErrNoMoreBlocks { + if err != common.ErrNoMoreBlocks { log.Printf("Reading failed: %s\n", err) } return @@ -126,8 +126,8 @@ func main() { } var ( - producer BlockProducer - consumer BlockConsumer + producer common.BlockProducer + consumer common.BlockConsumer err error ) diff --git a/interleaver/sqlite.go b/interleaver/sqlite.go index 068d5cb..817c7be 100644 --- a/interleaver/sqlite.go +++ b/interleaver/sqlite.go @@ -151,7 +151,7 @@ func NewSQLiteBlockProducer( func (sbp *SQLiteBlockProducer) Next(block *common.Block) (err error) { if sbp.rows == nil { - err = ErrNoMoreBlocks + err = common.ErrNoMoreBlocks return } if sbp.rows.Next() { @@ -162,7 +162,7 @@ func (sbp *SQLiteBlockProducer) Next(block *common.Block) (err error) { } else { sbp.rows.Close() sbp.rows = nil - err = ErrNoMoreBlocks + err = common.ErrNoMoreBlocks } return }