Esempio n. 1
0
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
}
Esempio n. 2
0
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))
	}
}