binlog.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package binlog
  2. import "fmt"
  3. func (c *Conn) registerAsSlave() error {
  4. brsc := &BinlogRegisterSlaveCommand{
  5. Status: COMMAND_REGISTER_SLAVE,
  6. ServerId: c.Config.ServerId,
  7. Hostname: "",
  8. User: "",
  9. Password: "",
  10. Port: 0,
  11. ReplRank: 0,
  12. MasterId: 0,
  13. }
  14. return c.writeBinlogRegisterSlaveCommand(brsc)
  15. }
  16. func (c *Conn) startBinlogStream() error {
  17. bldc := &BinlogDumpCommand{
  18. Status: COMMAND_BIN_LOG_DUMP,
  19. Position: 120,
  20. Flags: BINLOG_DUMP_NON_BLOCK,
  21. ServerId: c.Config.ServerId,
  22. Filename: c.Config.BinlogFile,
  23. }
  24. return c.writeBinlogDumpCommand(bldc)
  25. }
  26. func (c *Conn) listenForBinlog() error {
  27. for {
  28. p, err := c.readPacket()
  29. fmt.Printf("p = %+v\n", p)
  30. fmt.Printf("err = %+v\n", err)
  31. if err != nil || p == nil {
  32. return err
  33. } else {
  34. kp := p.(*OKPacket)
  35. c.getEventHeader(kp)
  36. }
  37. }
  38. }
  39. func (c *Conn) getEventHeader(p *OKPacket) {
  40. /*
  41. 4 timestamp
  42. 1 event type
  43. 4 server-id
  44. 4 event-size
  45. if binlog-version > 1:
  46. 4 log pos
  47. 2 flags
  48. */
  49. _ = c.getInt(TypeFixedInt, 4)
  50. }