diff --git a/server/coords/convert_test.go b/server/coords/convert_test.go index 831dfcd..5d34a5b 100644 --- a/server/coords/convert_test.go +++ b/server/coords/convert_test.go @@ -16,7 +16,7 @@ func TestMinCoord(t *testing.T){ c := NewMapBlockCoords(MinCoord, MinCoord, MinCoord) pc := CoordToPlain(c) - log.WithFields(logrus.Fields{"coords": c, "plain": pc}).Info("TestMinCoord") + log.WithFields(logrus.Fields{"coords": c, "plain": pc,"plain-1": pc-1}).Info("TestMinCoord") if pc != MinPlainCoord { t.Fatal("no min match") } diff --git a/server/coords/tileconvert.go b/server/coords/tileconvert.go index 7fb8395..18efa7e 100644 --- a/server/coords/tileconvert.go +++ b/server/coords/tileconvert.go @@ -9,7 +9,7 @@ const ( MAX_ZOOM = 13 ) -func GetTileCoordsFromMapBlock(mbc *MapBlockCoords, layers []layer.Layer) *TileCoords { +func GetTileCoordsFromMapBlock(mbc *MapBlockCoords, layers []*layer.Layer) *TileCoords { tc := TileCoords{X: mbc.X, Y: (mbc.Z + 1) * -1, Zoom: MAX_ZOOM} var layerid *int diff --git a/server/coords/tileconvert_test.go b/server/coords/tileconvert_test.go index 2d5e0de..e6be805 100644 --- a/server/coords/tileconvert_test.go +++ b/server/coords/tileconvert_test.go @@ -8,8 +8,8 @@ import ( func TestConvertMapblockToTile1(t *testing.T) { mbc := NewMapBlockCoords(0, 0, 0) - layers := []layer.Layer{ - layer.Layer{ + layers := []*layer.Layer{ + &layer.Layer{ Id: 0, Name: "Base", From: -16, @@ -48,8 +48,8 @@ func TestGetMapBlockRangeFromTile(t *testing.T) { func TestConvertMapblockToTile2(t *testing.T) { mbc := NewMapBlockCoords(1, 0, 1) - layers := []layer.Layer{ - layer.Layer{ + layers := []*layer.Layer{ + &layer.Layer{ Id: 0, Name: "Base", From: -16, @@ -74,8 +74,8 @@ func TestConvertMapblockToTile2(t *testing.T) { func TestConvertMapblockToTile3(t *testing.T) { mbc := NewMapBlockCoords(-1, 0, -1) - layers := []layer.Layer{ - layer.Layer{ + layers := []*layer.Layer{ + &layer.Layer{ Id: 0, Name: "Base", From: -16, diff --git a/server/db/accessor.go b/server/db/accessor.go index 084f454..51bf000 100644 --- a/server/db/accessor.go +++ b/server/db/accessor.go @@ -22,7 +22,7 @@ type DBAccessor interface { Migrate() error FindBlocksByMtime(gtmtime int64, limit int) ([]*Block, error) - FindNextInitialBlocks(s settings.Settings, layers []layer.Layer, limit int) (*InitialBlocksResult, error) + FindNextInitialBlocks(s settings.Settings, layers []*layer.Layer, limit int) (*InitialBlocksResult, error) CountBlocks(frommtime, tomtime int64) (int, error) GetBlock(pos *coords.MapBlockCoords) (*Block, error) diff --git a/server/db/sqlite/initialblocks.go b/server/db/sqlite/initialblocks.go index 55623ee..ee409e0 100644 --- a/server/db/sqlite/initialblocks.go +++ b/server/db/sqlite/initialblocks.go @@ -16,7 +16,7 @@ const getLastBlockQuery = ` select pos,data,mtime from blocks b where b.mtime = 0 -and b.pos >= ? +and b.pos > ? order by b.pos asc, b.mtime asc limit ? ` @@ -27,7 +27,7 @@ func (this *Sqlite3Accessor) FindNextInitialBlocks(s settings.Settings, layers [ blocks := make([]*db.Block, 0) - lastpos := s.GetInt64(SETTING_LAST_POS, coords.MinPlainCoord) + lastpos := s.GetInt64(SETTING_LAST_POS, coords.MinPlainCoord-1) rows, err := this.db.Query(getLastBlockQuery, lastpos, limit) if err != nil { diff --git a/server/mapblockaccessor/legacyblocks.go b/server/mapblockaccessor/legacyblocks.go index ab39a42..fe12c9e 100644 --- a/server/mapblockaccessor/legacyblocks.go +++ b/server/mapblockaccessor/legacyblocks.go @@ -1,7 +1,6 @@ package mapblockaccessor import ( - "mapserver/coords" "mapserver/eventbus" "mapserver/layer" "mapserver/settings" @@ -17,17 +16,9 @@ type FindNextLegacyBlocksResult struct { UnfilteredCount int } -func (a *MapBlockAccessor) FindNextLegacyBlocks(s settings.Settings, layers []layer.Layer, limit int) (*FindNextLegacyBlocksResult, error) { +func (a *MapBlockAccessor) FindNextLegacyBlocks(s settings.Settings, layers []*layer.Layer, limit int) (*FindNextLegacyBlocksResult, error) { - fields := logrus.Fields{ - "x": lastpos.X, - "y": lastpos.Y, - "z": lastpos.Z, - "limit": limit, - } - logrus.WithFields(fields).Debug("FindMapBlocksByPos") - - nextResult, err := a.accessor.FindNextInitialBlocks(lastpos, limit) + nextResult, err := a.accessor.FindNextInitialBlocks(s, layers, limit) blocks := nextResult.List if err != nil { @@ -37,28 +28,10 @@ func (a *MapBlockAccessor) FindNextLegacyBlocks(s settings.Settings, layers []la result := FindNextLegacyBlocksResult{} mblist := make([]*mapblockparser.MapBlock, 0) - var newlastpos *coords.MapBlockCoords - result.HasMore = len(blocks) == limit - result.UnfilteredCount = len(blocks) + result.HasMore = nextResult.HasMore + result.UnfilteredCount = nextResult.UnfilteredCount for _, block := range blocks { - newlastpos = block.Pos - if result.LastMtime < block.Mtime { - result.LastMtime = block.Mtime - } - - inLayer := false - for _, l := range layerfilter { - if (block.Pos.Y*16) >= l.From && (block.Pos.Y*16) <= l.To { - inLayer = true - break - } - } - - if !inLayer { - continue - } - fields := logrus.Fields{ "x": block.Pos.X, "y": block.Pos.Y, @@ -80,10 +53,9 @@ func (a *MapBlockAccessor) FindNextLegacyBlocks(s settings.Settings, layers []la } - result.LastPos = newlastpos result.List = mblist - fields = logrus.Fields{ + fields := logrus.Fields{ "len(List)": len(result.List), "unfilteredCount": result.UnfilteredCount, "hasMore": result.HasMore, diff --git a/server/mapblockaccessor/mtime.go b/server/mapblockaccessor/mtime.go index 4bfaffb..331a947 100644 --- a/server/mapblockaccessor/mtime.go +++ b/server/mapblockaccessor/mtime.go @@ -18,7 +18,7 @@ type FindMapBlocksByMtimeResult struct { UnfilteredCount int } -func (a *MapBlockAccessor) FindMapBlocksByMtime(lastmtime int64, limit int, layerfilter []layer.Layer) (*FindMapBlocksByMtimeResult, error) { +func (a *MapBlockAccessor) FindMapBlocksByMtime(lastmtime int64, limit int, layerfilter []*layer.Layer) (*FindMapBlocksByMtimeResult, error) { fields := logrus.Fields{ "lastmtime": lastmtime, diff --git a/server/mapblockrenderer/renderer_test.go b/server/mapblockrenderer/renderer_test.go index 07a8029..ad590e4 100644 --- a/server/mapblockrenderer/renderer_test.go +++ b/server/mapblockrenderer/renderer_test.go @@ -17,8 +17,8 @@ import ( func TestSimpleRender(t *testing.T) { logrus.SetLevel(logrus.InfoLevel) - layers := []layer.Layer{ - layer.Layer{ + layers := []*layer.Layer{ + &layer.Layer{ Id: 0, Name: "Base", From: -16, diff --git a/server/settings/settings.go b/server/settings/settings.go index 77aee4a..5d9abf9 100644 --- a/server/settings/settings.go +++ b/server/settings/settings.go @@ -2,9 +2,6 @@ package settings const ( SETTING_LAST_MTIME = "last_mtime" - SETTING_LASTX = "last_x" - SETTING_LASTY = "last_y" - SETTING_LASTZ = "last_z" SETTING_INITIAL_RUN = "initial_run" SETTING_LEGACY_PROCESSED = "legacy_processed" ) diff --git a/server/tilerenderer/renderer.go b/server/tilerenderer/renderer.go index 16c390e..c50ee3d 100644 --- a/server/tilerenderer/renderer.go +++ b/server/tilerenderer/renderer.go @@ -20,7 +20,7 @@ import ( type TileRenderer struct { mapblockrenderer *mapblockrenderer.MapBlockRenderer - layers []layer.Layer + layers []*layer.Layer tdb *tiledb.TileDB dba db.DBAccessor Eventbus *eventbus.Eventbus @@ -29,7 +29,7 @@ type TileRenderer struct { func NewTileRenderer(mapblockrenderer *mapblockrenderer.MapBlockRenderer, tdb *tiledb.TileDB, dba db.DBAccessor, - layers []layer.Layer) *TileRenderer { + layers []*layer.Layer) *TileRenderer { return &TileRenderer{ mapblockrenderer: mapblockrenderer, @@ -99,7 +99,7 @@ func (tr *TileRenderer) RenderImage(tc *coords.TileCoords, recursionDepth int) ( for _, l := range tr.layers { if l.Id == tc.LayerId { - layer = &l + layer = l } } diff --git a/server/tilerenderer/renderer_test.go b/server/tilerenderer/renderer_test.go index 5b56566..7908c4f 100644 --- a/server/tilerenderer/renderer_test.go +++ b/server/tilerenderer/renderer_test.go @@ -52,8 +52,8 @@ func TestTileRender(t *testing.T) { tdb, _ := tiledb.New(tiletmpdir) - layers := []layer.Layer{ - layer.Layer{ + layers := []*layer.Layer{ + &layer.Layer{ Id: 0, Name: "Base", From: -16, diff --git a/server/tilerendererjob/initial.go b/server/tilerendererjob/initial.go index 8f77a2c..b617d91 100644 --- a/server/tilerendererjob/initial.go +++ b/server/tilerendererjob/initial.go @@ -26,16 +26,10 @@ func initialRender(ctx *app.App, jobs chan *coords.TileCoords) { } logrus.WithFields(fields).Info("Starting initial rendering job") - lastx := ctx.Settings.GetInt(settings.SETTING_LASTX, coords.MinCoord-1) - lasty := ctx.Settings.GetInt(settings.SETTING_LASTY, coords.MinCoord-1) - lastz := ctx.Settings.GetInt(settings.SETTING_LASTZ, coords.MinCoord-1) - - lastcoords := coords.NewMapBlockCoords(lastx, lasty, lastz) - for true { start := time.Now() - result, err := ctx.BlockAccessor.FindNextLegacyBlocks(lastcoords, ctx.Config.RenderingFetchLimit, ctx.Config.Layers) + result, err := ctx.BlockAccessor.FindNextLegacyBlocks(ctx.Settings, ctx.Config.Layers, ctx.Config.RenderingFetchLimit) if err != nil { panic(err) @@ -62,13 +56,6 @@ func initialRender(ctx *app.App, jobs chan *coords.TileCoords) { tiles := renderMapblocks(ctx, jobs, result.List) - lastcoords = result.LastPos - ctx.Settings.SetInt64(settings.SETTING_LAST_MTIME, result.LastMtime) - - //Save current positions of initial run - ctx.Settings.SetInt(settings.SETTING_LASTX, lastcoords.X) - ctx.Settings.SetInt(settings.SETTING_LASTY, lastcoords.Y) - ctx.Settings.SetInt(settings.SETTING_LASTZ, lastcoords.Z) legacyProcessed += result.UnfilteredCount ctx.Settings.SetInt(settings.SETTING_LEGACY_PROCESSED, legacyProcessed) @@ -89,9 +76,6 @@ func initialRender(ctx *app.App, jobs chan *coords.TileCoords) { "tiles": tiles, "processed": legacyProcessed, "progress%": progress, - "X": lastcoords.X, - "Y": lastcoords.Y, - "Z": lastcoords.Z, "elapsed": elapsed, } logrus.WithFields(fields).Info("Initial rendering") diff --git a/server/web/config.go b/server/web/config.go index b9323df..91c39f8 100644 --- a/server/web/config.go +++ b/server/web/config.go @@ -9,7 +9,7 @@ import ( //Public facing config type PublicConfig struct { - Layers []layer.Layer `json:"layers"` + Layers []*layer.Layer `json:"layers"` MapObjects *app.MapObjectConfig `json:"mapobjects"` }