func (s *GoLevelDBStore) StoreLog(log *Log) error { s.m.Lock() defer s.m.Unlock() last, err := s.lastID() if err != nil { return err } s.last = InvalidLogID s.buf.Reset() if log.ID != last+1 { return ErrStoreLogID } last = log.ID key := num.Uint64ToBytes(log.ID) if err := log.Encode(&s.buf); err != nil { return err } if err = s.db.Put(key, s.buf.Bytes()); err != nil { return err } s.last = last return nil }
func (s *GoLevelDBStore) GetLog(id uint64, log *Log) error { v, err := s.db.Get(num.Uint64ToBytes(id)) if err != nil { return err } else if v == nil { return ErrLogNotFound } else { return log.Decode(bytes.NewBuffer(v)) } }