From 4fc84daf2ac803ea008df1c98b6dafdbce677243 Mon Sep 17 00:00:00 2001 From: Ben Johnson Date: Wed, 29 Jan 2014 22:35:58 -0500 Subject: Refactor meta.copy() and page.init(). --- db.go | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'db.go') diff --git a/db.go b/db.go index 275c4f5..bca4d56 100644 --- a/db.go +++ b/db.go @@ -91,11 +91,11 @@ func (db *DB) Open(path string, mode os.FileMode) error { // Read the first meta page to determine the page size. var buf [minPageSize]byte if _, err := db.file.ReadAt(buf[:], 0); err == nil { - if m, err := db.pageInBuffer(buf[:], 0).meta(); err != nil { - return &Error{"meta bootstrap error", err} - } else if m != nil { - db.pageSize = int(m.pageSize) + m := db.pageInBuffer(buf[:], 0).meta() + if err := m.validate(); err != nil { + return &Error{"meta error", err} } + db.pageSize = int(m.pageSize) } } @@ -126,10 +126,14 @@ func (db *DB) mmap() error { } // Save references to the meta pages. - if db.meta0, err = db.page(0).meta(); err != nil { + db.meta0 = db.page(0).meta() + db.meta1 = db.page(1).meta() + + // Validate the meta pages. + if err := db.meta0.validate(); err != nil { return &Error{"meta0 error", err} } - if db.meta1, err = db.page(1).meta(); err != nil { + if err := db.meta1.validate(); err != nil { return &Error{"meta1 error", err} } @@ -146,7 +150,12 @@ func (db *DB) init() error { for i := 0; i < 2; i++ { p := db.pageInBuffer(buf[:], pgid(i)) p.id = pgid(i) - p.init(db.pageSize) + p.flags = p_meta + + m := p.meta() + m.magic = magic + m.version = Version + m.pageSize = uint32(db.pageSize) } // Write the buffer to our data file. -- cgit v1.2.3