master.go 665 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package canal
  2. import (
  3. "sync"
  4. "github.com/siddontang/go-mysql/mysql"
  5. log "github.com/sirupsen/logrus"
  6. )
  7. type masterInfo struct {
  8. sync.RWMutex
  9. pos mysql.Position
  10. gtid mysql.GTIDSet
  11. }
  12. func (m *masterInfo) Update(pos mysql.Position) {
  13. log.Debugf("update master position %s", pos)
  14. m.Lock()
  15. m.pos = pos
  16. m.Unlock()
  17. }
  18. func (m *masterInfo) UpdateGTID(gtid mysql.GTIDSet) {
  19. log.Debugf("update master gtid %s", gtid.String())
  20. m.Lock()
  21. m.gtid = gtid
  22. m.Unlock()
  23. }
  24. func (m *masterInfo) Position() mysql.Position {
  25. m.RLock()
  26. defer m.RUnlock()
  27. return m.pos
  28. }
  29. func (m *masterInfo) GTID() mysql.GTIDSet {
  30. m.RLock()
  31. defer m.RUnlock()
  32. return m.gtid
  33. }