reversion.go 652 B

1234567891011121314151617181920212223242526272829303132333435
  1. package storage
  2. import "encoding/binary"
  3. type reversion struct {
  4. main int64
  5. sub int64
  6. }
  7. func (a reversion) GreaterThan(b reversion) bool {
  8. if a.main > b.main {
  9. return true
  10. }
  11. if a.main < b.main {
  12. return false
  13. }
  14. return a.sub > b.sub
  15. }
  16. func newRevBytes() []byte {
  17. return make([]byte, 8+1+8)
  18. }
  19. func revToBytes(rev reversion, bytes []byte) {
  20. binary.BigEndian.PutUint64(bytes, uint64(rev.main))
  21. bytes[8] = '_'
  22. binary.BigEndian.PutUint64(bytes[9:], uint64(rev.sub))
  23. }
  24. func bytesToRev(bytes []byte) reversion {
  25. return reversion{
  26. main: int64(binary.BigEndian.Uint64(bytes[0:8])),
  27. sub: int64(binary.BigEndian.Uint64(bytes[9:])),
  28. }
  29. }