Explorar o código

rm binlog impl & fix version

AE86 %!s(int64=4) %!d(string=hai) anos
pai
achega
f13239745f
Modificáronse 100 ficheiros con 1 adicións e 5330 borrados
  1. 1 2
      README.md
  2. 0 6
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/BinlogEventFilter.java
  3. 0 6
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/BinlogEventListener.java
  4. 0 12
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/BinlogEventParser.java
  5. 0 35
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/BinlogEventV4.java
  6. 0 22
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/BinlogEventV4Header.java
  7. 0 131
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/BinlogLocalClient.java
  8. 0 27
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/BinlogParser.java
  9. 0 16
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/BinlogParserContext.java
  10. 0 22
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/BinlogParserListener.java
  11. 0 399
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/BinlogRemoteClient.java
  12. 0 8
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/BinlogRowEventFilter.java
  13. 0 6
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/StatusVariable.java
  14. 0 8
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/UserVariable.java
  15. 0 279
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/AbstractBinlogParser.java
  16. 0 153
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/FileBasedBinlogParser.java
  17. 0 127
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/ReplicationBasedBinlogParser.java
  18. 0 33
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/AbstractBinlogEventV4.java
  19. 0 22
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/AbstractRowEvent.java
  20. 0 90
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/BinlogEventV4HeaderImpl.java
  21. 0 78
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/DeleteRowsEvent.java
  22. 0 87
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/DeleteRowsEventV2.java
  23. 0 124
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/FormatDescriptionEvent.java
  24. 0 42
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/GtidEvent.java
  25. 0 74
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/IncidentEvent.java
  26. 0 83
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/IntvarEvent.java
  27. 0 107
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/QueryEvent.java
  28. 0 52
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/RandEvent.java
  29. 0 53
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/RotateEvent.java
  30. 0 29
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/StopEvent.java
  31. 0 169
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/TableMapEvent.java
  32. 0 78
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/UpdateRowsEvent.java
  33. 0 98
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/UpdateRowsEventV2.java
  34. 0 104
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/UserVarEvent.java
  35. 0 67
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/WriteRowsEvent.java
  36. 0 87
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/WriteRowsEventV2.java
  37. 0 43
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/XidEvent.java
  38. 0 43
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/filter/BinlogRowEventFilterImpl.java
  39. 0 15
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/AbstractBinlogEventParser.java
  40. 0 182
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/AbstractRowEventParser.java
  41. 0 47
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/DeleteRowsEventParser.java
  42. 0 49
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/DeleteRowsEventV2Parser.java
  43. 0 47
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/FormatDescriptionEventParser.java
  44. 0 47
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/GtidEventParser.java
  45. 0 25
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/IncidentEventParser.java
  46. 0 25
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/IntvarEventParser.java
  47. 0 21
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/NopEventParser.java
  48. 0 97
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/QueryEventParser.java
  49. 0 24
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/RandEventParser.java
  50. 0 24
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/RotateEventParser.java
  51. 0 22
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/StopEventParser.java
  52. 0 53
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/TableMapEventParser.java
  53. 0 51
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/UpdateRowsEventParser.java
  54. 0 53
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/UpdateRowsEventV2Parser.java
  55. 0 56
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/UserVarEventParser.java
  56. 0 48
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/WriteRowsEventParser.java
  57. 0 51
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/WriteRowsEventV2Parser.java
  58. 0 32
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/XidEventParser.java
  59. 0 21
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/AbstractStatusVariable.java
  60. 0 41
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QAutoIncrement.java
  61. 0 34
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QCatalogCode.java
  62. 0 34
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QCatalogNzCode.java
  63. 0 49
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QCharsetCode.java
  64. 0 33
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QCharsetDatabaseCode.java
  65. 0 32
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QFlags2Code.java
  66. 0 44
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QInvoker.java
  67. 0 32
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QLcTimeNamesCode.java
  68. 0 32
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QMasterDataWrittenCode.java
  69. 0 32
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QMicroseconds.java
  70. 0 32
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QSQLModeCode.java
  71. 0 32
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QTableMapForUpdateCode.java
  72. 0 34
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QTimeZoneCode.java
  73. 0 50
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QUpdatedDBNames.java
  74. 0 21
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/user/AbstractUserVariable.java
  75. 0 25
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/user/UserVariableDecimal.java
  76. 0 31
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/user/UserVariableInt.java
  77. 0 25
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/user/UserVariableReal.java
  78. 0 25
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/user/UserVariableRow.java
  79. 0 32
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/user/UserVariableString.java
  80. 0 8
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/Column.java
  81. 0 74
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/Metadata.java
  82. 0 56
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/Pair.java
  83. 0 30
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/Row.java
  84. 0 159
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/UnsignedLong.java
  85. 0 16
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/AbstractDatetimeColumn.java
  86. 0 60
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/BitColumn.java
  87. 0 28
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/BlobColumn.java
  88. 0 26
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/DateColumn.java
  89. 0 36
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/Datetime2Column.java
  90. 0 41
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/DatetimeColumn.java
  91. 0 42
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/DecimalColumn.java
  92. 0 26
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/DoubleColumn.java
  93. 0 26
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/EnumColumn.java
  94. 0 26
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/FloatColumn.java
  95. 0 22
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/GeometryColumn.java
  96. 0 39
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/Int24Column.java
  97. 0 39
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/LongColumn.java
  98. 0 29
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/LongLongColumn.java
  99. 0 39
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/NullColumn.java
  100. 0 26
      dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/SetColumn.java

+ 1 - 2
README.md

@@ -60,7 +60,7 @@
             <tr>
                 <td rowspan="2">版本支持</td>
                 <td>Mysql</td>
-                <td colspan="4">5.7.19以上(Mysql-8.0暂不支持)</td>
+                <td colspan="4">5.7.19以上</td>
             </tr>
             <tr>
                 <td>Oracle</td>
@@ -81,7 +81,6 @@
     <ol>
         <li><a target="_blank" href="https://gitee.com/ghi/dbsyncer/releases">DBSyncer-1.0.0-Alpha.zip</a>(安装包)</li>
         <li><a target="_blank" href="https://www.oracle.com/java/technologies/jdk8-downloads.html">JRE 1.8 +</a></li>
-        <li><a target="_blank" href="http://apache.fayea.com/zookeeper/stable/">Zookeeper - 3.5.5</a> (高可用模式下需要)</li>
     </ol>
     <p>步骤</p>
     <ol>

+ 0 - 6
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/BinlogEventFilter.java

@@ -1,6 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog;
-
-public interface BinlogEventFilter {
-
-	boolean accepts(BinlogEventV4Header header, BinlogParserContext context);
-}

+ 0 - 6
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/BinlogEventListener.java

@@ -1,6 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog;
-
-public interface BinlogEventListener {
-
-	void onEvents(BinlogEventV4 event);
-}

+ 0 - 12
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/BinlogEventParser.java

@@ -1,12 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog;
-
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public interface BinlogEventParser {
-
-    int getEventType();
-
-    void parse(XInputStream is, BinlogEventV4Header header, BinlogParserContext context) throws IOException;
-}

+ 0 - 35
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/BinlogEventV4.java

@@ -1,35 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog;
-
-/**
- * 
- * <h3>BinlogEventV4</h3>
- * <ol type="1">
- * 	<li><dt>事件类型</dt></li>
- *  <pre>
- *  +=====================================+
- * | event  | timestamp         0 : 4    |
- * | header +----------------------------+
- * |        | type_code         4 : 1    |
- * |        +----------------------------+
- * |        | server_id         5 : 4    |
- * |        +----------------------------+
- * |        | event_length      9 : 4    |
- * |        +----------------------------+
- * |        | next_position    13 : 4    |
- * |        +----------------------------+
- * |        | flags            17 : 2    |
- * +=====================================+
- * | event  | fixed part       19 : y    |
- * | data   +----------------------------+
- * |        | variable part              |
- * +=====================================+
- *  </pre>
- * </ol>
- * @ClassName: BinlogEventV4 
- * @author: AE86
- * @date: 2018年10月17日 下午2:21:28
- */
-public interface BinlogEventV4 {
-
-	BinlogEventV4Header getHeader();
-}

+ 0 - 22
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/BinlogEventV4Header.java

@@ -1,22 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog;
-
-public interface BinlogEventV4Header {
-
-	int getHeaderLength();
-
-	long getPosition();
-
-	long getTimestamp();
-
-	int getEventType();
-
-	long getServerId();
-
-	long getEventLength();
-
-	long getNextPosition();
-
-	int getFlags();
-
-	long getTimestampOfReceipt();
-}

+ 0 - 131
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/BinlogLocalClient.java

@@ -1,131 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog;
-
-import org.dbsyncer.listener.mysql.binlog.impl.FileBasedBinlogParser;
-import org.dbsyncer.listener.mysql.binlog.impl.parser.*;
-
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-/**
- * <h3>本地解析器</h3>
- * <ol type="1">
- * <li><dt>binlog文件解析器</dt></li>
- * <dd>监听本地binlog文件增量数据</dd>
- * </ol>
- *
- * @ClassName: BinlogLocalClient
- * @author: AE86
- * @date: 2018年10月17日 下午2:50:38
- */
-public class BinlogLocalClient {
-    protected long stopPosition;
-    protected long startPosition;
-    protected String binlogFileName;
-    protected String binlogFilePath;
-
-    protected BinlogParser binlogParser;
-    protected BinlogEventListener binlogEventListener;
-    protected final AtomicBoolean running = new AtomicBoolean(false);
-    protected String threadSuffixName = "binlog-parser";
-
-    public boolean isRunning() {
-        return this.running.get();
-    }
-
-    public void start() throws Exception {
-        if (!this.running.compareAndSet(false, true)) {
-            return;
-        }
-
-        if (this.binlogParser == null) this.binlogParser = getDefaultBinlogParser();
-        this.binlogParser.setEventListener(this.binlogEventListener);
-        this.binlogParser.start(threadSuffixName);
-    }
-
-    public void stop(long timeout, TimeUnit unit) throws Exception {
-        if (!this.running.compareAndSet(true, false)) {
-            return;
-        }
-
-        this.binlogParser.stop(timeout, unit);
-    }
-
-    public long getStopPosition() {
-        return stopPosition;
-    }
-
-    public void setStopPosition(long position) {
-        this.stopPosition = position;
-    }
-
-    public long getStartPosition() {
-        return startPosition;
-    }
-
-    public void setStartPosition(long position) {
-        this.startPosition = position;
-    }
-
-    public String getBinlogFileName() {
-        return binlogFileName;
-    }
-
-    public void setBinlogFileName(String name) {
-        this.binlogFileName = name;
-    }
-
-    public String getBinlogFilePath() {
-        return binlogFilePath;
-    }
-
-    public void setBinlogFilePath(String path) {
-        this.binlogFilePath = path;
-    }
-
-    public BinlogParser getBinlogParser() {
-        return binlogParser;
-    }
-
-    public void setBinlogParser(BinlogParser parser) {
-        this.binlogParser = parser;
-    }
-
-    public BinlogEventListener getBinlogEventListener() {
-        return binlogEventListener;
-    }
-
-    public void setBinlogEventListener(BinlogEventListener listener) {
-        this.binlogEventListener = listener;
-    }
-
-    public void setThreadSuffixName(String threadSuffixName) {
-        this.threadSuffixName = threadSuffixName;
-    }
-
-    protected FileBasedBinlogParser getDefaultBinlogParser() throws Exception {
-        final FileBasedBinlogParser r = new FileBasedBinlogParser();
-        r.registerEventParser(new StopEventParser());
-        r.registerEventParser(new RotateEventParser());
-        r.registerEventParser(new IntvarEventParser());
-        r.registerEventParser(new XidEventParser());
-        r.registerEventParser(new RandEventParser());
-        r.registerEventParser(new QueryEventParser());
-        r.registerEventParser(new UserVarEventParser());
-        r.registerEventParser(new IncidentEventParser());
-        r.registerEventParser(new TableMapEventParser());
-        r.registerEventParser(new WriteRowsEventParser());
-        r.registerEventParser(new UpdateRowsEventParser());
-        r.registerEventParser(new DeleteRowsEventParser());
-        r.registerEventParser(new WriteRowsEventV2Parser());
-        r.registerEventParser(new UpdateRowsEventV2Parser());
-        r.registerEventParser(new DeleteRowsEventV2Parser());
-        r.registerEventParser(new FormatDescriptionEventParser());
-        r.registerEventParser(new GtidEventParser());
-
-        r.setStopPosition(this.stopPosition);
-        r.setStartPosition(this.startPosition);
-        r.setBinlogFileName(this.binlogFileName);
-        r.setBinlogFilePath(this.binlogFilePath);
-        return r;
-    }
-}

+ 0 - 27
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/BinlogParser.java

@@ -1,27 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog;
-
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
-public interface BinlogParser {
-
-	boolean isRunning();
-
-	void start(String threadSuffixName) throws Exception;
-
-	void stop(long timeout, TimeUnit unit) throws Exception;
-
-	void setEventFilter(BinlogEventFilter filter);
-
-	void setEventListener(BinlogEventListener listener);
-
-	List<BinlogParserListener> getParserListeners();
-
-	boolean addParserListener(BinlogParserListener listener);
-
-	void removeParserListener();
-	
-	boolean removeParserListener(BinlogParserListener listener);
-
-	void setParserListeners(List<BinlogParserListener> listeners);
-}

+ 0 - 16
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/BinlogParserContext.java

@@ -1,16 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog;
-
-import org.dbsyncer.listener.mysql.binlog.impl.event.TableMapEvent;
-
-public interface BinlogParserContext {
-    boolean getChecksumEnabled();
-
-    void setChecksumEnabled(boolean flag);
-
-
-    String getBinlogFileName();
-
-    BinlogEventListener getEventListener();
-
-    TableMapEvent getTableMapEvent(long tableId);
-}

+ 0 - 22
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/BinlogParserListener.java

@@ -1,22 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog;
-
-public interface BinlogParserListener {
-
-	void onStart(BinlogParser parser);
-
-	void onStop(BinlogParser parser);
-
-	void onException(BinlogParser parser, Exception eception);
-
-	class Adapter implements BinlogParserListener {
-
-		public void onStart(BinlogParser parser) {
-		}
-
-		public void onStop(BinlogParser parser) {
-		}
-
-		public void onException(BinlogParser parser, Exception exception) {
-		}
-	}
-}

+ 0 - 399
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/BinlogRemoteClient.java

@@ -1,399 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog;
-
-import org.dbsyncer.listener.mysql.binlog.impl.ReplicationBasedBinlogParser;
-import org.dbsyncer.listener.mysql.binlog.impl.parser.*;
-import org.dbsyncer.listener.mysql.common.glossary.column.StringColumn;
-import org.dbsyncer.listener.mysql.io.impl.SocketFactoryImpl;
-import org.dbsyncer.listener.mysql.net.Packet;
-import org.dbsyncer.listener.mysql.net.Transport;
-import org.dbsyncer.listener.mysql.net.TransportException;
-import org.dbsyncer.listener.mysql.net.impl.AuthenticatorImpl;
-import org.dbsyncer.listener.mysql.net.impl.Query;
-import org.dbsyncer.listener.mysql.net.impl.TransportImpl;
-import org.dbsyncer.listener.mysql.net.impl.packet.ErrorPacket;
-import org.dbsyncer.listener.mysql.net.impl.packet.command.ComBinlogDumpPacket;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.util.List;
-import java.util.UUID;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-/**
- * <h3>远程解析器</h3>
- * <ol type="1">
- * <li>
- * <dt>binlog文件解析器</dt></li>
- * <dd>远程连接数据库,监听binlog增量日志</dd>
- * </ol>
- *
- * @ClassName: BinlogRemoteClient
- * @author: AE86
- * @date: 2018年10月17日 下午2:51:43
- */
-public class BinlogRemoteClient {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(BinlogRemoteClient.class);
-
-    protected int serverId = 65535;
-    protected int port = 3306;
-    protected String host = "127.0.0.1";
-    protected String user = "root";
-    protected String password = "root";
-    protected String threadSuffixName;
-    protected String encoding = "utf-8";
-    protected String binlogFileName;
-    protected long binlogPosition = 4;
-
-    protected Float heartbeatPeriod;
-    protected Transport transport;
-    protected BinlogRowEventFilter filter;
-    protected ReplicationBasedBinlogParser binlogParser;
-    protected List<BinlogParserListener> binlogParserListener = new CopyOnWriteArrayList<BinlogParserListener>();
-    protected BinlogEventListener binlogEventListener;
-
-    protected String uuid = UUID.randomUUID().toString();
-    // 当发生异常的是否停止线程,默认false直接终止
-    protected boolean stopOnEOF = false;
-    protected int level1BufferSize = 1024 * 1024;
-    protected int level2BufferSize = 8 * 1024 * 1024;
-    protected int socketReceiveBufferSize = 512 * 1024;
-    protected final AtomicBoolean running = new AtomicBoolean(false);
-
-    public BinlogRemoteClient() {
-        super();
-    }
-
-    public BinlogRemoteClient(String host, int port, String user, String password, String threadSuffixName) {
-        this.host = host;
-        this.port = port;
-        this.user = user;
-        this.password = password;
-        this.threadSuffixName = threadSuffixName;
-    }
-
-    public boolean isRunning() {
-        return this.running.get();
-    }
-
-    public void start() throws Exception {
-        // 1、检查启动状态
-        if (!this.running.compareAndSet(false, true)) {
-            return;
-        }
-
-        // 2、创建通信管道
-        if (this.transport == null) {
-            this.transport = getDefaultTransport();
-        }
-        // 尝试连接
-        this.transport.connect(this.host, this.port);
-
-        // 3、配置解析器
-        if (this.binlogParser == null) {
-            this.binlogParser = getSimpleBinlogParser();
-        }
-        this.binlogParser.setTransport(this.transport);
-        this.binlogParser.setBinlogFileName(this.binlogFileName);
-        this.binlogParser.setEventListener(this.binlogEventListener);
-        this.binlogParserListener.add(new BinlogParserListener.Adapter() {
-            @Override
-            public void onStop(BinlogParser parser) {
-                try {
-                    stopQuietly(0, TimeUnit.MILLISECONDS);
-                } catch (Exception e) {
-                    LOGGER.error(e.getLocalizedMessage());
-                }
-            }
-        });
-        this.binlogParser.setParserListeners(this.binlogParserListener);
-        binlogParserListener = null;
-
-        // 4、检查连接数据库的基本信息
-        final Query query = new Query(this.transport);
-        setupFilenameAndPosition(query);
-        setupChecksumState(query);
-        setupHeartbeatPeriod(query);
-        setupSlaveUUID(query);
-        dumpBinlog();
-
-        // 5、启动解析器
-        this.binlogParser.start(threadSuffixName);
-    }
-
-    public void stop(long timeout, TimeUnit unit) throws Exception {
-        if (!this.running.compareAndSet(true, false)) {
-            return;
-        }
-
-        // disconnect the transport first: seems kinda wrong, but the parser
-        // thread can be blocked waiting for the
-        // last event, and doesn't have any timeouts. so we deal with the EOF
-        // exception thrown elsewhere in the code.
-        this.transport.disconnect();
-
-        if(null != this.binlogParser){
-            this.binlogParser.stop(timeout, unit);
-        }
-    }
-
-    public void stopQuietly() throws Exception {
-        stop(0, TimeUnit.MILLISECONDS);
-    }
-
-    public void stopQuietly(long timeout, TimeUnit unit) throws Exception {
-        stop(timeout, unit);
-    }
-
-    private Transport getDefaultTransport() throws Exception {
-        final TransportImpl r = new TransportImpl();
-        r.setLevel1BufferSize(this.level1BufferSize);
-        r.setLevel2BufferSize(this.level2BufferSize);
-
-        final AuthenticatorImpl authenticator = new AuthenticatorImpl();
-        authenticator.setUser(this.user);
-        authenticator.setPassword(this.password);
-        authenticator.setEncoding(this.encoding);
-        r.setAuthenticator(authenticator);
-
-        final SocketFactoryImpl socketFactory = new SocketFactoryImpl();
-        socketFactory.setKeepAlive(true);
-        socketFactory.setTcpNoDelay(false);
-        socketFactory.setReceiveBufferSize(this.socketReceiveBufferSize);
-        r.setSocketFactory(socketFactory);
-        return r;
-    }
-
-    private void setupFilenameAndPosition(Query query) throws Exception {
-        if (null == binlogFileName) {
-            try {
-                List<String> cols = query.getFirst("show master status");
-                binlogFileName = cols.get(0);
-                binlogPosition = Long.parseLong(cols.get(1));
-            } catch (TransportException e) {
-                // ignore no-such-variable errors on mysql 5.5
-                if (e.getErrorCode() != 1193)
-                    throw e;
-            }
-        }
-        if (binlogPosition < 4) {
-            binlogPosition = 4;
-            if (LOGGER.isWarnEnabled()) {
-                LOGGER.warn("Binary log position adjusted from " + binlogPosition + " to " + binlogPosition);
-            }
-        }
-    }
-
-    private void setupChecksumState(Query query) throws Exception {
-        try {
-            List<String> cols = query.getFirst("SELECT @@global.binlog_checksum");
-
-            if (cols != null && cols.get(0).equals("CRC32") || cols.get(0).equals("NONE")) {
-                query.getFirst("SET @master_binlog_checksum = @@global.binlog_checksum");
-            }
-        } catch (TransportException e) {
-            // ignore no-such-variable errors on mysql 5.5
-            if (e.getErrorCode() != 1193)
-                throw e;
-        }
-    }
-
-    private void setupHeartbeatPeriod(Query query) throws Exception {
-        if (this.heartbeatPeriod == null)
-            return;
-
-        BigInteger nanoSeconds = BigDecimal.valueOf(1000000000).multiply(BigDecimal.valueOf(this.heartbeatPeriod))
-                .toBigInteger();
-        query.getFirst("SET @master_heartbeat_period = " + nanoSeconds);
-    }
-
-    private void setupSlaveUUID(Query query) throws Exception {
-        query.getFirst("SET @slave_uuid = '" + this.uuid + "'");
-    }
-
-    private void dumpBinlog() throws Exception {
-        if (LOGGER.isDebugEnabled()) {
-            LOGGER.debug(String.format("starting replication at %s:%d", this.binlogFileName, this.binlogPosition));
-        }
-        final ComBinlogDumpPacket command = new ComBinlogDumpPacket();
-        command.setBinlogFlag(0);
-        command.setServerId(this.serverId);
-        command.setBinlogPosition(this.binlogPosition);
-        command.setBinlogFileName(StringColumn.valueOf(this.binlogFileName.getBytes(this.encoding)));
-        this.transport.getOutputStream().writePacket(command);
-        this.transport.getOutputStream().flush();
-
-        final Packet packet = this.transport.getInputStream().readPacket();
-        if (packet.getPacketBody()[0] == ErrorPacket.PACKET_MARKER) {
-            final ErrorPacket error = ErrorPacket.valueOf(packet);
-            throw new TransportException(error);
-        }
-    }
-
-    private ReplicationBasedBinlogParser getSimpleBinlogParser() throws Exception {
-        final ReplicationBasedBinlogParser r = new ReplicationBasedBinlogParser(stopOnEOF, threadSuffixName);
-        r.registerEventParser(new RotateEventParser());
-        r.registerEventParser(new FormatDescriptionEventParser());
-        r.registerEventParser(new XidEventParser());
-        r.registerEventParser(new TableMapEventParser());
-        r.registerEventParser(new WriteRowsEventV2Parser().setRowEventFilter(filter));
-        r.registerEventParser(new UpdateRowsEventV2Parser().setRowEventFilter(filter));
-        r.registerEventParser(new DeleteRowsEventV2Parser().setRowEventFilter(filter));
-        return r;
-    }
-
-    private ReplicationBasedBinlogParser getDefaultBinlogParser() throws Exception {
-        ReplicationBasedBinlogParser r = getSimpleBinlogParser();
-        r.registerEventParser(new StopEventParser());
-        r.registerEventParser(new IntvarEventParser());
-        r.registerEventParser(new RandEventParser());
-        r.registerEventParser(new QueryEventParser());
-        r.registerEventParser(new UserVarEventParser());
-        r.registerEventParser(new IncidentEventParser());
-        r.registerEventParser(new WriteRowsEventParser());
-        r.registerEventParser(new UpdateRowsEventParser());
-        r.registerEventParser(new DeleteRowsEventParser());
-        r.registerEventParser(new GtidEventParser());
-        return r;
-    }
-
-    /**
-     * 设置简化版解析器
-     */
-    public void setupDefaultBinlogParser() {
-        try {
-            this.binlogParser = getDefaultBinlogParser();
-        } catch (Exception e) {
-            LOGGER.error(e.getLocalizedMessage());
-        }
-    }
-
-    public void setHeartbeatPeriod(float period) {
-        this.heartbeatPeriod = period;
-    }
-
-    public Float getHeartbeatPeriod() {
-        return this.heartbeatPeriod;
-    }
-
-    public long getHeartbeatCount() {
-        return binlogParser.getHeartbeatCount();
-    }
-
-    public Long millisSinceLastEvent() {
-        return binlogParser.millisSinceLastEvent();
-    }
-
-    public String getEncoding() {
-        return encoding;
-    }
-
-    public void setEncoding(String encoding) {
-        this.encoding = encoding;
-    }
-
-    public int getServerId() {
-        return serverId;
-    }
-
-    public void setServerId(int serverId) {
-        this.serverId = serverId;
-    }
-
-    public long getBinlogPosition() {
-        return binlogPosition;
-    }
-
-    public void setBinlogPosition(long binlogPosition) {
-        this.binlogPosition = binlogPosition;
-    }
-
-
-    public String getBinlogFileName() {
-        return binlogFileName;
-    }
-
-
-    public void setBinlogFileName(String binlogFileName) {
-        this.binlogFileName = binlogFileName;
-    }
-
-
-    public int getLevel1BufferSize() {
-        return level1BufferSize;
-    }
-
-
-    public void setLevel1BufferSize(int level1BufferSize) {
-        this.level1BufferSize = level1BufferSize;
-    }
-
-
-    public int getLevel2BufferSize() {
-        return level2BufferSize;
-    }
-
-
-    public void setLevel2BufferSize(int level2BufferSize) {
-        this.level2BufferSize = level2BufferSize;
-    }
-
-
-    public int getSocketReceiveBufferSize() {
-        return socketReceiveBufferSize;
-    }
-
-
-    public void setSocketReceiveBufferSize(int socketReceiveBufferSize) {
-        this.socketReceiveBufferSize = socketReceiveBufferSize;
-    }
-
-
-    public Transport getTransport() {
-        return transport;
-    }
-
-
-    public void setTransport(Transport transport) {
-        this.transport = transport;
-    }
-
-
-    public void setFilter(BinlogRowEventFilter filter) {
-        this.filter = filter;
-    }
-
-    public BinlogParser getBinlogParser() {
-        return binlogParser;
-    }
-
-    public void setBinlogParser(ReplicationBasedBinlogParser parser) {
-        this.binlogParser = parser;
-    }
-
-    public void setBinlogParserListener(BinlogParserListener listener) {
-        binlogParserListener.add(listener);
-    }
-
-    public BinlogEventListener getBinlogEventListener() {
-        return binlogEventListener;
-    }
-
-    public void setBinlogEventListener(BinlogEventListener listener) {
-        this.binlogEventListener = listener;
-    }
-
-
-    public void setThreadSuffixName(String threadSuffixName) {
-        this.threadSuffixName = threadSuffixName;
-    }
-
-
-    public void setStopOnEOF(boolean stopOnEOF) {
-        this.stopOnEOF = stopOnEOF;
-    }
-}

+ 0 - 8
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/BinlogRowEventFilter.java

@@ -1,8 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog;
-
-import org.dbsyncer.listener.mysql.binlog.impl.event.TableMapEvent;
-
-public interface BinlogRowEventFilter {
-
-    boolean accepts(BinlogEventV4Header header, BinlogParserContext context, TableMapEvent event);
-}

+ 0 - 6
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/StatusVariable.java

@@ -1,6 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog;
-
-public interface StatusVariable {
-
-	int getType();
-}

+ 0 - 8
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/UserVariable.java

@@ -1,8 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog;
-
-public interface UserVariable {
-
-	int getType();
-
-	Object getValue();
-}

+ 0 - 279
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/AbstractBinlogParser.java

@@ -1,279 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl;
-
-import org.dbsyncer.listener.mysql.binlog.*;
-import org.dbsyncer.listener.mysql.binlog.impl.event.RotateEvent;
-import org.dbsyncer.listener.mysql.binlog.impl.event.TableMapEvent;
-import org.dbsyncer.listener.mysql.binlog.impl.parser.NopEventParser;
-import org.dbsyncer.listener.mysql.common.util.XThreadFactory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.EOFException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-public abstract class AbstractBinlogParser implements BinlogParser {
-    private static final Logger LOGGER = LoggerFactory.getLogger(AbstractBinlogParser.class);
-
-    protected Thread worker;
-    protected String threadSuffixName;
-    protected BinlogEventFilter eventFilter;
-    protected BinlogEventListener eventListener;
-    protected boolean clearTableMapEventsOnRotate = true;
-
-    protected final List<BinlogParserListener> parserListeners = new CopyOnWriteArrayList<BinlogParserListener>();
-    protected final AtomicBoolean verbose = new AtomicBoolean(false);
-    protected final AtomicBoolean running = new AtomicBoolean(false);
-    protected final BinlogEventParser defaultParser = new NopEventParser();
-    protected final BinlogEventParser[] parsers = new BinlogEventParser[128];
-    protected String binlogFileName;
-
-    protected abstract void doParse() throws Exception;
-
-    protected abstract void doStart() throws Exception;
-
-    protected abstract void doStop(long timeout, TimeUnit unit) throws Exception;
-
-    @Override
-    public boolean isRunning() {
-        return this.running.get();
-    }
-
-    @Override
-    public void start(String threadSuffixName) throws Exception {
-        if (!this.running.compareAndSet(false, true)) {
-            return;
-        }
-
-        doStart();
-
-        if (null == threadSuffixName) {
-            threadSuffixName = "binlog-parser";
-            this.worker = new XThreadFactory(threadSuffixName, false).newThread(new Task());
-        } else {
-            this.worker = new Thread(new Task());
-            this.worker.setDaemon(false);
-            this.worker.setName(threadSuffixName);
-        }
-        this.worker.start();
-        notifyOnStart();
-    }
-
-    @Override
-    public void stop(long timeout, TimeUnit unit) throws Exception {
-        if (!this.running.compareAndSet(true, false)) {
-            return;
-        }
-
-        try {
-            final long now = System.nanoTime();
-            doStop(timeout, unit);
-            timeout -= unit.convert(System.nanoTime() - now, TimeUnit.NANOSECONDS);
-
-            if (timeout > 0) {
-                unit.timedJoin(this.worker, timeout);
-                this.worker = null;
-            }
-        } finally {
-            notifyOnStop();
-        }
-    }
-
-    public boolean isVerbose() {
-        return this.verbose.get();
-    }
-
-    public void setVerbose(boolean verbose) {
-        this.verbose.set(verbose);
-    }
-
-    public BinlogEventFilter getEventFilter() {
-        return eventFilter;
-    }
-
-    @Override
-    public void setEventFilter(BinlogEventFilter filter) {
-        this.eventFilter = filter;
-    }
-
-    public BinlogEventListener getEventListener() {
-        return eventListener;
-    }
-
-    @Override
-    public void setEventListener(BinlogEventListener listener) {
-        this.eventListener = listener;
-    }
-
-    public boolean isClearTableMapEventsOnRotate() {
-        return clearTableMapEventsOnRotate;
-    }
-
-    public void setClearTableMapEventsOnRotate(boolean clearTableMapEventsOnRotate) {
-        this.clearTableMapEventsOnRotate = clearTableMapEventsOnRotate;
-    }
-
-    public void clearEventParsers() {
-        for (int i = 0; i < this.parsers.length; i++) {
-            this.parsers[i] = null;
-        }
-    }
-
-    public BinlogEventParser getEventParser(int type) {
-        return this.parsers[type];
-    }
-
-    public BinlogEventParser unregisterEventParser(int type) {
-        return this.parsers[type] = null;
-    }
-
-    public void registerEventParser(BinlogEventParser parser) {
-        this.parsers[parser.getEventType()] = parser;
-    }
-
-    // maintain backwards compat
-    @Deprecated
-    public void registgerEventParser(BinlogEventParser parser) {
-        this.registerEventParser(parser);
-    }
-
-    @Deprecated
-    public BinlogEventParser unregistgerEventParser(int type) {
-        return unregisterEventParser(type);
-    }
-
-    public void setEventParsers(List<BinlogEventParser> parsers) {
-        clearEventParsers();
-        if (parsers != null) {
-            for (BinlogEventParser parser : parsers) {
-                registerEventParser(parser);
-            }
-        }
-    }
-
-    @Override
-    public List<BinlogParserListener> getParserListeners() {
-        return new ArrayList<BinlogParserListener>(this.parserListeners);
-    }
-
-    @Override
-    public boolean addParserListener(BinlogParserListener listener) {
-        return this.parserListeners.add(listener);
-    }
-
-    @Override
-    public void removeParserListener() {
-        this.parserListeners.clear();
-    }
-
-    @Override
-    public boolean removeParserListener(BinlogParserListener listener) {
-        return this.parserListeners.remove(listener);
-    }
-
-    @Override
-    public void setParserListeners(List<BinlogParserListener> listeners) {
-        this.parserListeners.clear();
-        if (listeners != null) this.parserListeners.addAll(listeners);
-    }
-
-    public String getBinlogFileName() {
-        return binlogFileName;
-    }
-
-    private void notifyOnStart() {
-        for (BinlogParserListener listener : this.parserListeners) {
-            listener.onStart(this);
-        }
-    }
-
-    private void notifyOnStop() {
-        for (BinlogParserListener listener : this.parserListeners) {
-            listener.onStop(this);
-        }
-    }
-
-    private void notifyOnException(Exception exception) {
-        for (BinlogParserListener listener : this.parserListeners) {
-            listener.onException(this, exception);
-        }
-    }
-
-    protected class Task implements Runnable {
-        public void run() {
-            try {
-                doParse();
-            } catch (EOFException e) {
-            } catch (Exception e) {
-                notifyOnException(e);
-            } finally {
-                try {
-                    stop(0, TimeUnit.MILLISECONDS);
-                } catch (Exception e) {
-                    LOGGER.error("failed to stop binlog parser", e);
-                }
-            }
-        }
-    }
-
-    protected class Context implements BinlogParserContext, BinlogEventListener {
-        private String binlogFileName;
-        private final Map<Long, TableMapEvent> tableMapEvents = new HashMap<Long, TableMapEvent>();
-        private boolean checksumEnabled;
-
-        public Context(AbstractBinlogParser parser) {
-            this.binlogFileName = parser.getBinlogFileName();
-
-        }
-
-        public final String getBinlogFileName() {
-            return binlogFileName;
-        }
-
-        public final void setBinlogFileName(String name) {
-            this.binlogFileName = name;
-        }
-
-        public final BinlogEventListener getEventListener() {
-            return this;
-        }
-
-        public final TableMapEvent getTableMapEvent(long tableId) {
-            return this.tableMapEvents.get(tableId);
-        }
-
-        public void onEvents(BinlogEventV4 event) {
-            if (event == null) {
-                return;
-            }
-
-            if (event instanceof TableMapEvent) {
-                final TableMapEvent tme = (TableMapEvent) event;
-                this.tableMapEvents.put(tme.getTableId(), tme);
-            } else if (event instanceof RotateEvent) {
-                final RotateEvent re = (RotateEvent) event;
-                this.binlogFileName = re.getBinlogFileName().toString();
-                if (isClearTableMapEventsOnRotate()) this.tableMapEvents.clear();
-            }
-
-            try {
-                AbstractBinlogParser.this.eventListener.onEvents(event);
-            } catch (Exception e) {
-                LOGGER.error("failed to notify binlog event listener, event: " + event, e);
-            }
-        }
-
-        public boolean getChecksumEnabled() {
-            return this.checksumEnabled;
-        }
-
-        public void setChecksumEnabled(boolean flag) {
-            this.checksumEnabled = flag;
-        }
-    }
-}

+ 0 - 153
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/FileBasedBinlogParser.java

@@ -1,153 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventParser;
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4;
-import org.dbsyncer.listener.mysql.binlog.impl.event.BinlogEventV4HeaderImpl;
-import org.dbsyncer.listener.mysql.binlog.impl.parser.FormatDescriptionEventParser;
-import org.dbsyncer.listener.mysql.common.util.CodecUtils;
-import org.dbsyncer.listener.mysql.common.util.IOUtils;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-import org.dbsyncer.listener.mysql.io.impl.XInputStreamImpl;
-import org.dbsyncer.listener.mysql.io.util.RamdomAccessFileInputStream;
-import org.dbsyncer.listener.mysql.net.impl.EventInputStream;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.util.concurrent.TimeUnit;
-
-public class FileBasedBinlogParser extends AbstractBinlogParser {
-    private static final Logger LOGGER = LoggerFactory.getLogger(FileBasedBinlogParser.class);
-
-    protected XInputStream is;
-    protected String binlogFileName;
-    protected String binlogFilePath;
-    protected long stopPosition = 0;
-    protected long startPosition = 4;
-
-    public FileBasedBinlogParser() {
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        this.is = open(this.binlogFilePath + "/" + this.binlogFileName, this.startPosition);
-    }
-
-    @Override
-    protected void doStop(long timeout, TimeUnit unit) throws Exception {
-        IOUtils.closeQuietly(this.is);
-    }
-
-    public String getBinlogFileName() {
-        return binlogFileName;
-    }
-
-    public void setBinlogFileName(String name) {
-        this.binlogFileName = name;
-    }
-
-    public String getBinlogFilePath() {
-        return binlogFilePath;
-    }
-
-    public void setBinlogFilePath(String path) {
-        this.binlogFilePath = path;
-    }
-
-    public long getStopPosition() {
-        return stopPosition;
-    }
-
-    public void setStopPosition(long stopPosition) {
-        this.stopPosition = stopPosition;
-    }
-
-    public long getStartPosition() {
-        return startPosition;
-    }
-
-    public void setStartPosition(long startPosition) {
-        this.startPosition = startPosition;
-    }
-
-    @Override
-    protected void doParse() throws Exception {
-        final Context context = new Context(this);
-        final EventInputStream es = new EventInputStream(is);
-
-        es.setChecksumEnabled(findChecksumEnabled());
-
-        while (isRunning() && is.available() > 0) {
-            final BinlogEventV4HeaderImpl header = es.getNextBinlogHeader();
-            try {
-                if (isVerbose() && LOGGER.isInfoEnabled()) {
-                    LOGGER.info("read an event, header: {}", header);
-                }
-
-                if (this.stopPosition > 0 && header.getPosition() > this.stopPosition) {
-                    break;
-                }
-
-                // Parse the event body
-                if (this.eventFilter != null && !this.eventFilter.accepts(header, context)) {
-                    this.defaultParser.parse(es, header, context);
-                } else {
-                    BinlogEventParser parser = getEventParser(header.getEventType());
-                    if (parser == null) parser = this.defaultParser;
-                    parser.parse(es, header, context);
-                }
-
-                es.finishEvent(header);
-            } catch (Exception e) {
-                IOUtils.closeQuietly(is);
-                throw e;
-            } finally {
-                is.setReadLimit(0);
-            }
-        }
-    }
-
-    @SuppressWarnings("resource")
-    private boolean findChecksumEnabled() throws Exception {
-        final XInputStream is = open(this.binlogFilePath + "/" + this.binlogFileName, 4L);
-        final Context context = new Context(this) {
-            @Override
-            public void onEvents(BinlogEventV4 event) {
-            }
-        };
-        final EventInputStream es = new EventInputStream(is);
-        final BinlogEventV4HeaderImpl header = es.getNextBinlogHeader();
-
-        if (header.getEventType() != MySQLConstants.FORMAT_DESCRIPTION_EVENT)
-            throw new RuntimeException("Expected FORMAT_DESCRIPTION_EVENT at top of file, found " + header);
-
-        // use our own parser instead of the client's -- they may not have registered a
-        // parser for FORMAT_DESCRIPTION_EVENT, or they may not want to get it
-        new FormatDescriptionEventParser().parse(es, header, context);
-
-        es.finishEvent(header);
-        es.close();
-
-        return context.getChecksumEnabled();
-    }
-
-    protected XInputStream open(String path, Long offset) throws Exception {
-        final XInputStream is = new XInputStreamImpl(new RamdomAccessFileInputStream(new File(path)));
-        try {
-            // Check binlog magic
-            final byte[] magic = is.readBytes(MySQLConstants.BINLOG_MAGIC.length);
-            if (!CodecUtils.equals(magic, MySQLConstants.BINLOG_MAGIC)) {
-                throw new RuntimeException("invalid binlog magic, file: " + path);
-            }
-
-            if (offset > MySQLConstants.BINLOG_MAGIC.length) {
-                is.skip(offset - MySQLConstants.BINLOG_MAGIC.length);
-            }
-            return is;
-        } catch (Exception e) {
-            IOUtils.closeQuietly(is);
-            throw e;
-        }
-    }
-}

+ 0 - 127
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/ReplicationBasedBinlogParser.java

@@ -1,127 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventParser;
-import org.dbsyncer.listener.mysql.binlog.impl.event.BinlogEventV4HeaderImpl;
-import org.dbsyncer.listener.mysql.binlog.impl.parser.FormatDescriptionEventParser;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.net.Transport;
-import org.dbsyncer.listener.mysql.net.TransportInputStream;
-import org.dbsyncer.listener.mysql.net.impl.EventInputStream;
-import org.dbsyncer.listener.mysql.net.impl.packet.EOFPacket;
-import org.dbsyncer.listener.mysql.net.impl.packet.ErrorPacket;
-import org.dbsyncer.listener.mysql.net.impl.packet.OKPacket;
-
-import java.io.EOFException;
-import java.io.IOException;
-import java.util.concurrent.TimeUnit;
-
-public class ReplicationBasedBinlogParser extends AbstractBinlogParser {
-    private final boolean stopOnEOF;
-    protected long heartbeatCount = 0;
-    protected Long lastEventMillis = null;
-
-    protected Transport transport;
-
-    public ReplicationBasedBinlogParser(boolean stopOnEOF, String threadSuffixName) {
-        this.stopOnEOF = stopOnEOF;
-        super.threadSuffixName = threadSuffixName;
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        // NOP
-    }
-
-    @Override
-    protected void doStop(long timeout, TimeUnit unit) throws Exception {
-        // NOP
-    }
-
-    public void setTransport(Transport transport) {
-        this.transport = transport;
-    }
-
-    @Override
-    public String getBinlogFileName() {
-        return binlogFileName;
-    }
-
-    public void setBinlogFileName(String binlogFileName) {
-        this.binlogFileName = binlogFileName;
-    }
-
-    private void readPacketMarker(TransportInputStream ts) throws IOException {
-        final int packetMarker = ts.readInt(1);
-        if (packetMarker != OKPacket.PACKET_MARKER) { // 0x00
-            if ((byte) packetMarker == ErrorPacket.PACKET_MARKER) {
-                final ErrorPacket packet = ErrorPacket.valueOf(ts.currentPacketLength(), ts.currentPacketSequence(), packetMarker, ts);
-                throw new RuntimeException(packet.toString());
-            } else if ((byte) packetMarker == EOFPacket.PACKET_MARKER) {
-                if (stopOnEOF) {
-                    throw new EOFException();
-                } else {
-                    final EOFPacket packet = EOFPacket.valueOf(ts.currentPacketLength(), ts.currentPacketSequence(), packetMarker, ts);
-                    throw new IllegalArgumentException(packet.toString());
-                }
-            } else {
-                throw new RuntimeException("assertion failed, invalid packet marker: " + packetMarker);
-            }
-        }
-    }
-
-    public long getHeartbeatCount() {
-        return this.heartbeatCount;
-    }
-
-    public Long millisSinceLastEvent() {
-        if (this.lastEventMillis == null)
-            return null;
-
-        return System.currentTimeMillis() - this.lastEventMillis;
-    }
-
-    @Override
-    protected void doParse() throws Exception {
-        final TransportInputStream is = this.transport.getInputStream();
-        final EventInputStream es = new EventInputStream(is);
-
-        final Context context = new Context(this);
-
-        BinlogEventV4HeaderImpl header;
-        while (isRunning()) {
-            readPacketMarker(is);
-            header = es.getNextBinlogHeader();
-
-            boolean isFormatDescriptionEvent = header.getEventType() == MySQLConstants.FORMAT_DESCRIPTION_EVENT;
-
-            if (header.getEventType() == MySQLConstants.HEARTBEAT_LOG_EVENT)
-                this.heartbeatCount++;
-
-            this.lastEventMillis = System.currentTimeMillis();
-
-            // Parse the event body
-            if (this.eventFilter != null && !this.eventFilter.accepts(header, context)) {
-                /*
-                 * FORMAT_DESCRIPTION events must always be parsed to ensure
-                 * that we record checksum info -- if the caller has filtered
-                 * them out, we still need to know.
-                 */
-                if (isFormatDescriptionEvent)
-                    new FormatDescriptionEventParser().parse(es, header, context);
-                else
-                    this.defaultParser.parse(es, header, context);
-            } else {
-                BinlogEventParser parser = getEventParser(header.getEventType());
-                if (parser == null)
-                    parser = this.defaultParser;
-                parser.parse(es, header, context);
-            }
-
-            if (isFormatDescriptionEvent)
-                es.setChecksumEnabled(context.getChecksumEnabled());
-
-            es.finishEvent(header);
-        }
-    }
-
-}

+ 0 - 33
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/AbstractBinlogEventV4.java

@@ -1,33 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.event;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4;
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-public abstract class AbstractBinlogEventV4 implements BinlogEventV4 {
-    protected BinlogEventV4Header header;
-    protected String binlogFilename;
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("header", header).toString();
-    }
-
-    public BinlogEventV4Header getHeader() {
-        return header;
-    }
-
-    public void setHeader(BinlogEventV4Header header) {
-        this.header = header;
-    }
-
-    public String getBinlogFilename() {
-        return binlogFilename;
-    }
-
-    public void setBinlogFilename(String binlogFilename) {
-        this.binlogFilename = binlogFilename;
-    }
-
-}

+ 0 - 22
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/AbstractRowEvent.java

@@ -1,22 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.event;
-
-public abstract class AbstractRowEvent extends AbstractBinlogEventV4 {
-	protected long tableId;
-	protected int reserved;
-
-	public long getTableId() {
-		return tableId;
-	}
-
-	public void setTableId(long tableId) {
-		this.tableId = tableId;
-	}
-
-	public int getReserved() {
-		return reserved;
-	}
-
-	public void setReserved(int reserved) {
-		this.reserved = reserved;
-	}
-}

+ 0 - 90
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/BinlogEventV4HeaderImpl.java

@@ -1,90 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.event;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-public final class BinlogEventV4HeaderImpl implements BinlogEventV4Header {
-    private long timestamp;
-    private int eventType;
-    private long serverId;
-    private long eventLength;
-    private long nextPosition;
-    private int flags;
-    private long timestampOfReceipt;
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("timestamp", timestamp)
-                .append("eventType", eventType)
-                .append("serverId", serverId)
-                .append("eventLength", eventLength)
-                .append("nextPosition", nextPosition)
-                .append("flags", flags)
-                .append("timestampOfReceipt", timestampOfReceipt).toString();
-    }
-
-    public int getHeaderLength() {
-        return 19;
-    }
-
-    public long getPosition() {
-        return this.nextPosition - this.eventLength;
-    }
-
-    public long getTimestamp() {
-        return timestamp;
-    }
-
-    public void setTimestamp(long timestamp) {
-        this.timestamp = timestamp;
-    }
-
-    public int getEventType() {
-        return eventType;
-    }
-
-    public void setEventType(int eventType) {
-        this.eventType = eventType;
-    }
-
-    public long getServerId() {
-        return serverId;
-    }
-
-    public void setServerId(long serverId) {
-        this.serverId = serverId;
-    }
-
-    public long getEventLength() {
-        return eventLength;
-    }
-
-    public void setEventLength(long eventLength) {
-        this.eventLength = eventLength;
-    }
-
-    public long getNextPosition() {
-        return nextPosition;
-    }
-
-    public void setNextPosition(long nextPosition) {
-        this.nextPosition = nextPosition;
-    }
-
-    public int getFlags() {
-        return flags;
-    }
-
-    public void setFlags(int flags) {
-        this.flags = flags;
-    }
-
-    public long getTimestampOfReceipt() {
-        return timestampOfReceipt;
-    }
-
-    public void setTimestampOfReceipt(long timestampOfReceipt) {
-        this.timestampOfReceipt = timestampOfReceipt;
-    }
-}

+ 0 - 78
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/DeleteRowsEvent.java

@@ -1,78 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.event;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.common.glossary.Row;
-import org.dbsyncer.listener.mysql.common.glossary.UnsignedLong;
-import org.dbsyncer.listener.mysql.common.glossary.column.BitColumn;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-import java.util.List;
-
-/**
- * Used for row-based binary logging. This event logs deletions of rows in a single table.
- *
- * @ClassName: DeleteRowsEvent
- * @author: AE86
- * @date: 2018年10月17日 下午2:24:57
- */
-public final class DeleteRowsEvent extends AbstractRowEvent {
-    //
-    public static final int EVENT_TYPE = MySQLConstants.DELETE_ROWS_EVENT;
-
-    //
-    private UnsignedLong columnCount;
-    private BitColumn usedColumns;
-    private List<Row> rows;
-
-    /**
-     *
-     */
-    public DeleteRowsEvent() {
-    }
-
-    public DeleteRowsEvent(BinlogEventV4Header header) {
-        this.header = header;
-    }
-
-    /**
-     *
-     */
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("header", header)
-                .append("tableId", tableId)
-                .append("reserved", reserved)
-                .append("columnCount", columnCount)
-                .append("usedColumns", usedColumns)
-                .append("rows", rows).toString();
-    }
-
-    /**
-     *
-     */
-    public UnsignedLong getColumnCount() {
-        return columnCount;
-    }
-
-    public void setColumnCount(UnsignedLong columnCount) {
-        this.columnCount = columnCount;
-    }
-
-    public BitColumn getUsedColumns() {
-        return usedColumns;
-    }
-
-    public void setUsedColumns(BitColumn usedColumns) {
-        this.usedColumns = usedColumns;
-    }
-
-    public List<Row> getRows() {
-        return rows;
-    }
-
-    public void setRows(List<Row> rows) {
-        this.rows = rows;
-    }
-}

+ 0 - 87
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/DeleteRowsEventV2.java

@@ -1,87 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.event;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.common.glossary.Row;
-import org.dbsyncer.listener.mysql.common.glossary.UnsignedLong;
-import org.dbsyncer.listener.mysql.common.glossary.column.BitColumn;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-import java.util.List;
-
-/**
- * Used for row-based binary logging. This event logs deletions of rows in a single table.
- *
- * @ClassName: DeleteRowsEvent
- * @author: AE86
- * @date: 2018年10月17日 下午2:24:57
- */
-public final class DeleteRowsEventV2 extends AbstractRowEvent {
-    public static final int EVENT_TYPE = MySQLConstants.DELETE_ROWS_EVENT_V2;
-
-    private int extraInfoLength;
-    private byte extraInfo[];
-    private UnsignedLong columnCount;
-    private BitColumn usedColumns;
-    private List<Row> rows;
-
-    public DeleteRowsEventV2() {
-    }
-
-    public DeleteRowsEventV2(BinlogEventV4Header header) {
-        this.header = header;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("header", header)
-                .append("tableId", tableId)
-                .append("reserved", reserved)
-                .append("extraInfoLength", extraInfoLength)
-                .append("extraInfo", extraInfo)
-                .append("columnCount", columnCount)
-                .append("usedColumns", usedColumns)
-                .append("rows", rows).toString();
-    }
-
-    public int getExtraInfoLength() {
-        return extraInfoLength;
-    }
-
-    public void setExtraInfoLength(int extraInfoLength) {
-        this.extraInfoLength = extraInfoLength;
-    }
-
-    public byte[] getExtraInfo() {
-        return extraInfo;
-    }
-
-    public void setExtraInfo(byte[] extraInfo) {
-        this.extraInfo = extraInfo;
-    }
-
-    public UnsignedLong getColumnCount() {
-        return columnCount;
-    }
-
-    public void setColumnCount(UnsignedLong columnCount) {
-        this.columnCount = columnCount;
-    }
-
-    public BitColumn getUsedColumns() {
-        return usedColumns;
-    }
-
-    public void setUsedColumns(BitColumn usedColumns) {
-        this.usedColumns = usedColumns;
-    }
-
-    public List<Row> getRows() {
-        return rows;
-    }
-
-    public void setRows(List<Row> rows) {
-        this.rows = rows;
-    }
-}

+ 0 - 124
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/FormatDescriptionEvent.java

@@ -1,124 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.event;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.common.glossary.column.StringColumn;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-import java.util.Arrays;
-
-/**
- * A descriptor event that is written to the beginning of the each binary log file.
- * This event is used as of MySQL 5.0; it supersedes START_EVENT_V3.
- *
- * @ClassName: FormatDescriptionEvent
- * @author: AE86
- * @date: 2018年10月17日 下午2:25:53
- */
-public final class FormatDescriptionEvent extends AbstractBinlogEventV4 {
-    //
-    public static final int EVENT_TYPE = MySQLConstants.FORMAT_DESCRIPTION_EVENT;
-
-    //
-    private int binlogVersion;
-    private StringColumn serverVersion;
-    private long createTimestamp;
-    private int headerLength;
-    private byte[] eventTypes;
-
-    /**
-     *
-     */
-    public FormatDescriptionEvent() {
-    }
-
-    public FormatDescriptionEvent(BinlogEventV4Header header) {
-        this.header = header;
-    }
-
-    /**
-     *
-     */
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("header", header)
-                .append("binlogVersion", binlogVersion)
-                .append("serverVersion", serverVersion)
-                .append("createTimestamp", createTimestamp)
-                .append("headerLength", headerLength)
-                .append("eventTypes", Arrays.toString(eventTypes)).toString();
-    }
-
-    /**
-     *
-     */
-    public int getBinlogVersion() {
-        return binlogVersion;
-    }
-
-    public void setBinlogVersion(int binlogVersion) {
-        this.binlogVersion = binlogVersion;
-    }
-
-    public StringColumn getServerVersion() {
-        return serverVersion;
-    }
-
-    public void setServerVersion(StringColumn serverVersion) {
-        this.serverVersion = serverVersion;
-    }
-
-    public long getCreateTimestamp() {
-        return createTimestamp;
-    }
-
-    public void setCreateTimestamp(long createTimestamp) {
-        this.createTimestamp = createTimestamp;
-    }
-
-    public int getHeaderLength() {
-        return headerLength;
-    }
-
-    public void setHeaderLength(int headerLength) {
-        this.headerLength = headerLength;
-    }
-
-    public byte[] getEventTypes() {
-        return eventTypes;
-    }
-
-    public void setEventTypes(byte[] eventTypes) {
-        this.eventTypes = eventTypes;
-    }
-
-    public boolean checksumEnabled() {
-        if (checksumPossible()) {
-            return this.eventTypes[this.eventTypes.length - 1] == 1;
-        } else {
-            return false;
-        }
-
-    }
-
-    public boolean checksumPossible() {
-        Integer[] version = splitServerVersion();
-        if (version[0] >= 5 && version[1] >= 6 && version[2] >= 1) {
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    private Integer[] splitServerVersion() {
-        String version = this.serverVersion.toString();
-        String[] versionSplit = version.split("\\.");
-        Integer[] ret = new Integer[versionSplit.length];
-
-        for (int i = 0; i < versionSplit.length; i++) {
-            ret[i] = Integer.parseInt(versionSplit[i].replaceAll("[^0-9]", ""));
-        }
-        return ret;
-    }
-}

+ 0 - 42
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/GtidEvent.java

@@ -1,42 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.event;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-import java.util.Arrays;
-
-public class GtidEvent extends AbstractBinlogEventV4 {
-    private byte[] sourceId;
-    private long transactionId;
-
-    public GtidEvent() {
-    }
-
-    public GtidEvent(BinlogEventV4Header header) {
-        this.header = header;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("header", header)
-                .append("transactionId", transactionId)
-                .append("sourceId", Arrays.toString(sourceId)).toString();
-    }
-
-    public byte[] getSourceId() {
-        return sourceId;
-    }
-
-    public void setSourceId(byte[] sourceId) {
-        this.sourceId = sourceId;
-    }
-
-    public long getTransactionId() {
-        return transactionId;
-    }
-
-    public void setTransactionId(long transactionId) {
-        this.transactionId = transactionId;
-    }
-}

+ 0 - 74
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/IncidentEvent.java

@@ -1,74 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.event;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.common.glossary.column.StringColumn;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-/**
- * Used to log an out of the ordinary event that occurred on the master.
- * It notifies the slave that something happened on the master that might
- * cause data to be in an inconsistent state.
- *
- * @ClassName: IncidentEvent
- * @author: AE86
- * @date: 2018年10月17日 下午2:26:26
- */
-public final class IncidentEvent extends AbstractBinlogEventV4 {
-    //
-    public static final int EVENT_TYPE = MySQLConstants.INCIDENT_EVENT;
-
-    //
-    private int incidentNumber;
-    private int messageLength;
-    private StringColumn message;
-
-    /**
-     *
-     */
-    public IncidentEvent() {
-    }
-
-    public IncidentEvent(BinlogEventV4Header header) {
-        this.header = header;
-    }
-
-    /**
-     *
-     */
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("header", header)
-                .append("incidentNumber", incidentNumber)
-                .append("messageLength", messageLength)
-                .append("message", message).toString();
-    }
-
-    /**
-     *
-     */
-    public int getIncidentNumber() {
-        return incidentNumber;
-    }
-
-    public void setIncidentNumber(int incidentNumber) {
-        this.incidentNumber = incidentNumber;
-    }
-
-    public int getMessageLength() {
-        return messageLength;
-    }
-
-    public void setMessageLength(int messageLength) {
-        this.messageLength = messageLength;
-    }
-
-    public StringColumn getMessage() {
-        return message;
-    }
-
-    public void setMessage(StringColumn message) {
-        this.message = message;
-    }
-}

+ 0 - 83
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/IntvarEvent.java

@@ -1,83 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.dbsyncer.listener.mysql.binlog.impl.event;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.common.glossary.UnsignedLong;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-/**
- * Written every time a statement uses an AUTO_INCREMENT column or the LAST_INSERT_ID() function;
- * precedes other events for the statement. This is written only before a QUERY_EVENT and is not
- * used with row-based logging. An INTVAR_EVENT is written with a "subtype" in the event data part:
- * <ol type="1">
- * 	<li><dt>INSERT_ID_EVENT indicates the value to use for an AUTO_INCREMENT column in the next statement.</dt></li>
- * 	<li><dt>LAST_INSERT_ID_EVENT indicates the value to use for the LAST_INSERT_ID() function in the next statement.</dt></li>
- * </ol>
- * @ClassName: IntvarEvent
- * @author: AE86
- * @date: 2018年10月17日 下午2:27:13
- */
-public final class IntvarEvent extends AbstractBinlogEventV4 {
-    //
-    public static final int EVENT_TYPE = MySQLConstants.INTVAR_EVENT;
-
-    //
-    private int type;
-    private UnsignedLong value;
-
-    /**
-     *
-     */
-    public IntvarEvent() {
-    }
-
-    public IntvarEvent(BinlogEventV4Header header) {
-        this.header = header;
-    }
-
-    /**
-     *
-     */
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("header", header)
-                .append("type", type)
-                .append("value", value).toString();
-    }
-
-    /**
-     *
-     */
-    public int getType() {
-        return type;
-    }
-
-    public void setType(int type) {
-        this.type = type;
-    }
-
-    public UnsignedLong getValue() {
-        return value;
-    }
-
-    public void setValue(UnsignedLong value) {
-        this.value = value;
-    }
-}

+ 0 - 107
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/QueryEvent.java

@@ -1,107 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.event;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.binlog.StatusVariable;
-import org.dbsyncer.listener.mysql.common.glossary.column.StringColumn;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-import java.util.List;
-
-public final class QueryEvent extends AbstractBinlogEventV4 {
-    public static final int EVENT_TYPE = MySQLConstants.QUERY_EVENT;
-
-    private long threadId;
-    private long elapsedTime;
-    private int databaseNameLength;
-    private int errorCode;
-    private int statusVariablesLength;
-    private List<StatusVariable> statusVariables;
-    private StringColumn databaseName;
-    private StringColumn sql;
-
-    public QueryEvent() {
-    }
-
-    public QueryEvent(BinlogEventV4Header header) {
-        this.header = header;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("header", header)
-                .append("threadId", threadId)
-                .append("elapsedTime", elapsedTime)
-                .append("databaseNameLength", databaseNameLength)
-                .append("errorCode", errorCode)
-                .append("statusVariablesLength", statusVariablesLength)
-                .append("statusVariables", statusVariables)
-                .append("databaseName", databaseName)
-                .append("sql", sql).toString();
-    }
-
-    public long getThreadId() {
-        return threadId;
-    }
-
-    public void setThreadId(long threadId) {
-        this.threadId = threadId;
-    }
-
-    public long getElapsedTime() {
-        return elapsedTime;
-    }
-
-    public void setElapsedTime(long elapsedTime) {
-        this.elapsedTime = elapsedTime;
-    }
-
-    public int getDatabaseNameLength() {
-        return databaseNameLength;
-    }
-
-    public void setDatabaseNameLength(int databaseNameLength) {
-        this.databaseNameLength = databaseNameLength;
-    }
-
-    public int getErrorCode() {
-        return errorCode;
-    }
-
-    public void setErrorCode(int errorCode) {
-        this.errorCode = errorCode;
-    }
-
-    public int getStatusVariablesLength() {
-        return statusVariablesLength;
-    }
-
-    public void setStatusVariablesLength(int statusVariableLength) {
-        this.statusVariablesLength = statusVariableLength;
-    }
-
-    public List<StatusVariable> getStatusVariables() {
-        return statusVariables;
-    }
-
-    public void setStatusVariables(List<StatusVariable> statusVariables) {
-        this.statusVariables = statusVariables;
-    }
-
-    public StringColumn getDatabaseName() {
-        return databaseName;
-    }
-
-    public void setDatabaseName(StringColumn databaseName) {
-        this.databaseName = databaseName;
-    }
-
-    public StringColumn getSql() {
-        return sql;
-    }
-
-    public void setSql(StringColumn sql) {
-        this.sql = sql;
-    }
-}

+ 0 - 52
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/RandEvent.java

@@ -1,52 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.event;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-/**
- * Written every time a statement uses the RAND() function; precedes other events for the statement.
- * Indicates the seed values to use for generating a random number with RAND() in the next statement.
- * This is written only before a QUERY_EVENT and is not used with row-based logging.
- *
- * @ClassName: RandEvent
- * @author: AE86
- * @date: 2018年10月17日 下午2:28:28
- */
-public final class RandEvent extends AbstractBinlogEventV4 {
-    public static final int EVENT_TYPE = MySQLConstants.RAND_EVENT;
-
-    private long randSeed1;
-    private long randSeed2;
-
-    public RandEvent() {
-    }
-
-    public RandEvent(BinlogEventV4Header header) {
-        this.header = header;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("header", header)
-                .append("randSeed1", randSeed1)
-                .append("randSeed2", randSeed2).toString();
-    }
-
-    public long getRandSeed1() {
-        return randSeed1;
-    }
-
-    public void setRandSeed1(long randSeed1) {
-        this.randSeed1 = randSeed1;
-    }
-
-    public long getRandSeed2() {
-        return randSeed2;
-    }
-
-    public void setRandSeed2(long randSeed2) {
-        this.randSeed2 = randSeed2;
-    }
-}

+ 0 - 53
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/RotateEvent.java

@@ -1,53 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.event;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.common.glossary.column.StringColumn;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-/**
- * Written when mysqld switches to a new binary log file. This occurs when someone
- * issues a FLUSH LOGS statement or the current binary log file becomes too large.
- * The maximum size is determined by max_binlog_size.
- *
- * @ClassName: RotateEvent
- * @author: AE86
- * @date: 2018年10月17日 下午2:28:53
- */
-public final class RotateEvent extends AbstractBinlogEventV4 {
-    public static final int EVENT_TYPE = MySQLConstants.ROTATE_EVENT;
-
-    private long binlogPosition;
-    private StringColumn binlogFileName;
-
-    public RotateEvent() {
-    }
-
-    public RotateEvent(BinlogEventV4Header header) {
-        this.header = header;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("header", header)
-                .append("binlogPosition", binlogPosition)
-                .append("binlogFileName", binlogFileName).toString();
-    }
-
-    public long getBinlogPosition() {
-        return binlogPosition;
-    }
-
-    public void setBinlogPosition(long binlogPosition) {
-        this.binlogPosition = binlogPosition;
-    }
-
-    public StringColumn getBinlogFileName() {
-        return binlogFileName;
-    }
-
-    public void setBinlogFileName(StringColumn binlogFileName) {
-        this.binlogFileName = binlogFileName;
-    }
-}

+ 0 - 29
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/StopEvent.java

@@ -1,29 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.event;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-/**
- * Written when mysqld stops.
- *
- * @ClassName: StopEvent
- * @author: AE86
- * @date: 2018年10月17日 下午2:29:15
- */
-public final class StopEvent extends AbstractBinlogEventV4 {
-    public static final int EVENT_TYPE = MySQLConstants.STOP_EVENT;
-
-    public StopEvent() {
-    }
-
-    public StopEvent(BinlogEventV4Header header) {
-        this.header = header;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("header", header).toString();
-    }
-}

+ 0 - 169
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/TableMapEvent.java

@@ -1,169 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.event;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.common.glossary.Metadata;
-import org.dbsyncer.listener.mysql.common.glossary.UnsignedLong;
-import org.dbsyncer.listener.mysql.common.glossary.column.BitColumn;
-import org.dbsyncer.listener.mysql.common.glossary.column.StringColumn;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-import java.util.Arrays;
-
-/**
- * Used for row-based binary logging. This event precedes each row operation event.
- * It maps a table definition to a number, where the table definition consists of
- * database and table names and column definitions. The purpose of this event is to
- * enable replication when a table has different definitions on the master and slave.
- * Row operation events that belong to the same transaction may be grouped into sequences,
- * in which case each such sequence of events begins with a sequence of TABLE_MAP_EVENT events:
- * one per table used by events in the sequence.
- *
- * @ClassName: TableMapEvent
- * @author: AE86
- * @date: 2018年10月17日 下午2:29:31
- */
-public final class TableMapEvent extends AbstractBinlogEventV4 {
-    public static final int EVENT_TYPE = MySQLConstants.TABLE_MAP_EVENT;
-
-    private long tableId;
-    private int reserved;
-    private int databaseNameLength;
-    private StringColumn databaseName;
-    private int tableNameLength;
-    private StringColumn tableName;
-    private UnsignedLong columnCount;
-    private byte[] columnTypes;
-    private UnsignedLong columnMetadataCount;
-    private Metadata columnMetadata;
-    private BitColumn columnNullabilities;
-
-    public TableMapEvent() {
-    }
-
-    public TableMapEvent(BinlogEventV4Header header) {
-        this.header = header;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("header", header)
-                .append("tableId", tableId)
-                .append("reserved", reserved)
-                .append("databaseNameLength", databaseNameLength)
-                .append("databaseName", databaseName)
-                .append("tableNameLength", tableNameLength)
-                .append("tableName", tableName)
-                .append("columnCount", columnCount)
-                .append("columnTypes", Arrays.toString(columnTypes))
-                .append("columnMetadataCount", columnMetadataCount)
-                .append("columnMetadata", columnMetadata)
-                .append("columnNullabilities", columnNullabilities).toString();
-    }
-
-    public TableMapEvent copy() {
-        final TableMapEvent r = new TableMapEvent();
-        r.setHeader(this.header);
-        r.setTableId(this.tableId);
-        r.setReserved(this.reserved);
-        r.setDatabaseNameLength(this.databaseNameLength);
-        r.setDatabaseName(this.databaseName);
-        r.setTableNameLength(this.tableNameLength);
-        r.setTableName(this.tableName);
-        r.setColumnCount(this.columnCount);
-        r.setColumnTypes(this.columnTypes);
-        r.setColumnMetadataCount(this.columnMetadataCount);
-        r.setColumnMetadata(this.columnMetadata);
-        r.setColumnNullabilities(this.columnNullabilities);
-        return r;
-    }
-
-    public long getTableId() {
-        return tableId;
-    }
-
-    public void setTableId(long tableId) {
-        this.tableId = tableId;
-    }
-
-    public int getReserved() {
-        return reserved;
-    }
-
-    public void setReserved(int reserved) {
-        this.reserved = reserved;
-    }
-
-    public int getDatabaseNameLength() {
-        return databaseNameLength;
-    }
-
-    public void setDatabaseNameLength(int databaseNameLength) {
-        this.databaseNameLength = databaseNameLength;
-    }
-
-    public StringColumn getDatabaseName() {
-        return databaseName;
-    }
-
-    public void setDatabaseName(StringColumn databaseName) {
-        this.databaseName = databaseName;
-    }
-
-    public int getTableNameLength() {
-        return tableNameLength;
-    }
-
-    public void setTableNameLength(int tableNameLength) {
-        this.tableNameLength = tableNameLength;
-    }
-
-    public StringColumn getTableName() {
-        return tableName;
-    }
-
-    public void setTableName(StringColumn tableName) {
-        this.tableName = tableName;
-    }
-
-    public UnsignedLong getColumnCount() {
-        return columnCount;
-    }
-
-    public void setColumnCount(UnsignedLong columnCount) {
-        this.columnCount = columnCount;
-    }
-
-    public byte[] getColumnTypes() {
-        return columnTypes;
-    }
-
-    public void setColumnTypes(byte[] columnTypes) {
-        this.columnTypes = columnTypes;
-    }
-
-    public UnsignedLong getColumnMetadataCount() {
-        return columnMetadataCount;
-    }
-
-    public void setColumnMetadataCount(UnsignedLong columnMetadataCount) {
-        this.columnMetadataCount = columnMetadataCount;
-    }
-
-    public Metadata getColumnMetadata() {
-        return columnMetadata;
-    }
-
-    public void setColumnMetadata(Metadata columnMetadata) {
-        this.columnMetadata = columnMetadata;
-    }
-
-    public BitColumn getColumnNullabilities() {
-        return columnNullabilities;
-    }
-
-    public void setColumnNullabilities(BitColumn columnNullabilities) {
-        this.columnNullabilities = columnNullabilities;
-    }
-}

+ 0 - 78
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/UpdateRowsEvent.java

@@ -1,78 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.event;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.common.glossary.Pair;
-import org.dbsyncer.listener.mysql.common.glossary.Row;
-import org.dbsyncer.listener.mysql.common.glossary.UnsignedLong;
-import org.dbsyncer.listener.mysql.common.glossary.column.BitColumn;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-import java.util.List;
-
-/**
- * Used for row-based binary logging. This event logs updates of rows in a single table.
- *
- * @ClassName: UpdateRowsEvent
- * @author: AE86
- * @date: 2018年10月17日 下午2:30:06
- */
-public final class UpdateRowsEvent extends AbstractRowEvent {
-    public static final int EVENT_TYPE = MySQLConstants.UPDATE_ROWS_EVENT;
-
-    private UnsignedLong columnCount;
-    private BitColumn usedColumnsBefore;
-    private BitColumn usedColumnsAfter;
-    private List<Pair<Row>> rows;
-
-    public UpdateRowsEvent() {
-    }
-
-    public UpdateRowsEvent(BinlogEventV4Header header) {
-        this.header = header;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("header", header)
-                .append("tableId", tableId)
-                .append("reserved", reserved)
-                .append("columnCount", columnCount)
-                .append("usedColumnsBefore", usedColumnsBefore)
-                .append("usedColumnsAfter", usedColumnsAfter)
-                .append("rows", rows).toString();
-    }
-
-    public UnsignedLong getColumnCount() {
-        return columnCount;
-    }
-
-    public void setColumnCount(UnsignedLong columnCount) {
-        this.columnCount = columnCount;
-    }
-
-    public BitColumn getUsedColumnsBefore() {
-        return usedColumnsBefore;
-    }
-
-    public void setUsedColumnsBefore(BitColumn usedColumnsBefore) {
-        this.usedColumnsBefore = usedColumnsBefore;
-    }
-
-    public BitColumn getUsedColumnsAfter() {
-        return usedColumnsAfter;
-    }
-
-    public void setUsedColumnsAfter(BitColumn usedColumnsAfter) {
-        this.usedColumnsAfter = usedColumnsAfter;
-    }
-
-    public List<Pair<Row>> getRows() {
-        return rows;
-    }
-
-    public void setRows(List<Pair<Row>> rows) {
-        this.rows = rows;
-    }
-}

+ 0 - 98
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/UpdateRowsEventV2.java

@@ -1,98 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.event;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.common.glossary.Pair;
-import org.dbsyncer.listener.mysql.common.glossary.Row;
-import org.dbsyncer.listener.mysql.common.glossary.UnsignedLong;
-import org.dbsyncer.listener.mysql.common.glossary.column.BitColumn;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-import java.util.List;
-
-/**
- * Used for row-based binary logging. This event logs updates of rows in a single table.
- *
- * @ClassName: UpdateRowsEventV2
- * @author: AE86
- * @date: 2018年10月17日 下午2:30:27
- */
-public final class UpdateRowsEventV2 extends AbstractRowEvent {
-    public static final int EVENT_TYPE = MySQLConstants.UPDATE_ROWS_EVENT_V2;
-
-    private int extraInfoLength;
-    private byte extraInfo[];
-    private UnsignedLong columnCount;
-    private BitColumn usedColumnsBefore;
-    private BitColumn usedColumnsAfter;
-    private List<Pair<Row>> rows;
-
-    public UpdateRowsEventV2() {
-    }
-
-    public UpdateRowsEventV2(BinlogEventV4Header header) {
-        this.header = header;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("header", header)
-                .append("tableId", tableId)
-                .append("reserved", reserved)
-                .append("extraInfoLength", extraInfoLength)
-                .append("extraInfo", extraInfo)
-                .append("columnCount", columnCount)
-                .append("usedColumnsBefore", usedColumnsBefore)
-                .append("usedColumnsAfter", usedColumnsAfter)
-                .append("rows", rows).toString();
-    }
-
-    public int getExtraInfoLength() {
-        return extraInfoLength;
-    }
-
-    public void setExtraInfoLength(int extraInfoLength) {
-        this.extraInfoLength = extraInfoLength;
-    }
-
-    public byte[] getExtraInfo() {
-        return extraInfo;
-    }
-
-    public void setExtraInfo(byte[] extraInfo) {
-        this.extraInfo = extraInfo;
-    }
-
-    public UnsignedLong getColumnCount() {
-        return columnCount;
-    }
-
-    public void setColumnCount(UnsignedLong columnCount) {
-        this.columnCount = columnCount;
-    }
-
-    public BitColumn getUsedColumnsBefore() {
-        return usedColumnsBefore;
-    }
-
-    public void setUsedColumnsBefore(BitColumn usedColumnsBefore) {
-        this.usedColumnsBefore = usedColumnsBefore;
-    }
-
-    public BitColumn getUsedColumnsAfter() {
-        return usedColumnsAfter;
-    }
-
-    public void setUsedColumnsAfter(BitColumn usedColumnsAfter) {
-        this.usedColumnsAfter = usedColumnsAfter;
-    }
-
-    public List<Pair<Row>> getRows() {
-        return rows;
-    }
-
-    public void setRows(List<Pair<Row>> rows) {
-        this.rows = rows;
-    }
-}

+ 0 - 104
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/UserVarEvent.java

@@ -1,104 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.event;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.binlog.UserVariable;
-import org.dbsyncer.listener.mysql.common.glossary.column.StringColumn;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-/**
- * Written every time a statement uses a user variable; precedes other events for the statement.
- * Indicates the value to use for the user variable in the next statement.
- * This is written only before a QUERY_EVENT and is not used with row-based logging.
- *
- * @ClassName: UserVarEvent
- * @author: AE86
- * @date: 2018年10月17日 下午2:30:48
- */
-public final class UserVarEvent extends AbstractBinlogEventV4 {
-    public static final int EVENT_TYPE = MySQLConstants.USER_VAR_EVENT;
-
-    private int varNameLength;
-    private StringColumn varName;
-    private int isNull;
-    private int varType;
-    private int varCollation;
-    private int varValueLength;
-    private UserVariable varValue;
-
-    public UserVarEvent() {
-    }
-
-    public UserVarEvent(BinlogEventV4Header header) {
-        this.header = header;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("header", header)
-                .append("varNameLength", varNameLength)
-                .append("varName", varName)
-                .append("isNull", isNull)
-                .append("varType", varType)
-                .append("varCollation", varCollation)
-                .append("varValueLength", varValueLength)
-                .append("varValue", varValue).toString();
-    }
-
-    public int getVarNameLength() {
-        return varNameLength;
-    }
-
-    public void setVarNameLength(int varNameLength) {
-        this.varNameLength = varNameLength;
-    }
-
-    public StringColumn getVarName() {
-        return varName;
-    }
-
-    public void setVarName(StringColumn varName) {
-        this.varName = varName;
-    }
-
-    public int getIsNull() {
-        return isNull;
-    }
-
-    public void setIsNull(int isNull) {
-        this.isNull = isNull;
-    }
-
-    public int getVarType() {
-        return varType;
-    }
-
-    public void setVarType(int variableType) {
-        this.varType = variableType;
-    }
-
-    public int getVarCollation() {
-        return varCollation;
-    }
-
-    public void setVarCollation(int varCollation) {
-        this.varCollation = varCollation;
-    }
-
-    public int getVarValueLength() {
-        return varValueLength;
-    }
-
-    public void setVarValueLength(int varValueLength) {
-        this.varValueLength = varValueLength;
-    }
-
-    public UserVariable getVarValue() {
-        return varValue;
-    }
-
-    public void setVarValue(UserVariable varValue) {
-        this.varValue = varValue;
-    }
-}

+ 0 - 67
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/WriteRowsEvent.java

@@ -1,67 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.event;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.common.glossary.Row;
-import org.dbsyncer.listener.mysql.common.glossary.UnsignedLong;
-import org.dbsyncer.listener.mysql.common.glossary.column.BitColumn;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-import java.util.List;
-
-/**
- * Used for row-based binary logging. This event logs inserts of rows in a single table.
- *
- * @ClassName: WriteRowsEvent
- * @author: AE86
- * @date: 2018年10月17日 下午2:31:07
- */
-public final class WriteRowsEvent extends AbstractRowEvent {
-    public static final int EVENT_TYPE = MySQLConstants.WRITE_ROWS_EVENT;
-
-    private UnsignedLong columnCount;
-    private BitColumn usedColumns;
-    private List<Row> rows;
-
-    public WriteRowsEvent() {
-    }
-
-    public WriteRowsEvent(BinlogEventV4Header header) {
-        this.header = header;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("header", header)
-                .append("tableId", tableId)
-                .append("reserved", reserved)
-                .append("columnCount", columnCount)
-                .append("usedColumns", usedColumns)
-                .append("rows", rows).toString();
-    }
-
-    public UnsignedLong getColumnCount() {
-        return columnCount;
-    }
-
-    public void setColumnCount(UnsignedLong columnCount) {
-        this.columnCount = columnCount;
-    }
-
-    public BitColumn getUsedColumns() {
-        return usedColumns;
-    }
-
-    public void setUsedColumns(BitColumn usedColumns) {
-        this.usedColumns = usedColumns;
-    }
-
-    public List<Row> getRows() {
-        return rows;
-    }
-
-    public void setRows(List<Row> rows) {
-        this.rows = rows;
-    }
-}

+ 0 - 87
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/WriteRowsEventV2.java

@@ -1,87 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.event;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.common.glossary.Row;
-import org.dbsyncer.listener.mysql.common.glossary.UnsignedLong;
-import org.dbsyncer.listener.mysql.common.glossary.column.BitColumn;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-import java.util.List;
-
-/**
- * Used for row-based binary logging. This event logs inserts of rows in a single table.
- *
- * @ClassName: WriteRowsEventV2
- * @author: AE86
- * @date: 2018年10月17日 下午2:31:28
- */
-public final class WriteRowsEventV2 extends AbstractRowEvent {
-    public static final int EVENT_TYPE = MySQLConstants.WRITE_ROWS_EVENT_V2;
-
-    private int extraInfoLength;
-    private byte extraInfo[];
-    private UnsignedLong columnCount;
-    private BitColumn usedColumns;
-    private List<Row> rows;
-
-    public WriteRowsEventV2() {
-    }
-
-    public WriteRowsEventV2(BinlogEventV4Header header) {
-        this.header = header;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("header", header)
-                .append("tableId", tableId)
-                .append("reserved", reserved)
-                .append("extraInfoLength", extraInfoLength)
-                .append("extraInfo", extraInfo)
-                .append("columnCount", columnCount)
-                .append("usedColumns", usedColumns)
-                .append("rows", rows).toString();
-    }
-
-    public int getExtraInfoLength() {
-        return extraInfoLength;
-    }
-
-    public void setExtraInfoLength(int extraInfoLength) {
-        this.extraInfoLength = extraInfoLength;
-    }
-
-    public byte[] getExtraInfo() {
-        return extraInfo;
-    }
-
-    public void setExtraInfo(byte[] extraInfo) {
-        this.extraInfo = extraInfo;
-    }
-
-    public UnsignedLong getColumnCount() {
-        return columnCount;
-    }
-
-    public void setColumnCount(UnsignedLong columnCount) {
-        this.columnCount = columnCount;
-    }
-
-    public BitColumn getUsedColumns() {
-        return usedColumns;
-    }
-
-    public void setUsedColumns(BitColumn usedColumns) {
-        this.usedColumns = usedColumns;
-    }
-
-    public List<Row> getRows() {
-        return rows;
-    }
-
-    public void setRows(List<Row> rows) {
-        this.rows = rows;
-    }
-}

+ 0 - 43
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/event/XidEvent.java

@@ -1,43 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.event;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-/**
- * Generated for a commit of a transaction that modifies one or more tables of an XA-capable storage engine.
- * Normal transactions are implemented by sending a QUERY_EVENT containing a BEGIN statement and a QUERY_EVENT
- * containing a COMMIT statement (or a ROLLBACK statement if the transaction is rolled back).
- * Strictly speaking, Xid_log_event is used if thd-&gt;transaction.xid_state.xid.get_my_xid() returns non-zero.
- *
- * @ClassName: XidEvent
- * @author: AE86
- * @date: 2018年10月17日 下午2:31:45
- */
-public final class XidEvent extends AbstractBinlogEventV4 {
-    public static final int EVENT_TYPE = MySQLConstants.XID_EVENT;
-
-    private long xid;
-
-    public XidEvent() {
-    }
-
-    public XidEvent(BinlogEventV4Header header) {
-        this.header = header;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("header", header)
-                .append("xid", xid).toString();
-    }
-
-    public long getXid() {
-        return xid;
-    }
-
-    public void setXid(long xid) {
-        this.xid = xid;
-    }
-}

+ 0 - 43
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/filter/BinlogRowEventFilterImpl.java

@@ -1,43 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.filter;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.binlog.BinlogParserContext;
-import org.dbsyncer.listener.mysql.binlog.BinlogRowEventFilter;
-import org.dbsyncer.listener.mysql.binlog.impl.event.TableMapEvent;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * <h3>默认拦截器</h3>
- * <ol type="1">
- * <li><dt>自定义拦截</dt></li>
- * </ol>
- *
- * @ClassName: BinlogRowEventFilterImpl
- * @author: AE86
- * @date: 2018年10月15日 下午5:25:52
- */
-public class BinlogRowEventFilterImpl implements BinlogRowEventFilter {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(BinlogRowEventFilterImpl.class);
-
-    private boolean verbose = true;
-
-    public boolean isVerbose() {
-        return verbose;
-    }
-
-    public void setVerbose(boolean verbose) {
-        this.verbose = verbose;
-    }
-
-    public boolean accepts(BinlogEventV4Header header, BinlogParserContext context, TableMapEvent event) {
-        if (event == null) {
-            if (isVerbose() && LOGGER.isWarnEnabled()) {
-                LOGGER.warn("failed to find TableMapEvent, header: {}", header);
-            }
-            return false;
-        }
-        return true;
-    }
-}

+ 0 - 15
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/AbstractBinlogEventParser.java

@@ -1,15 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.parser;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventParser;
-
-public abstract class AbstractBinlogEventParser implements BinlogEventParser {
-    protected final int eventType;
-
-    public AbstractBinlogEventParser(int eventType) {
-        this.eventType = eventType;
-    }
-
-    public final int getEventType() {
-        return eventType;
-    }
-}

+ 0 - 182
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/AbstractRowEventParser.java

@@ -1,182 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.parser;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogRowEventFilter;
-import org.dbsyncer.listener.mysql.binlog.impl.event.TableMapEvent;
-import org.dbsyncer.listener.mysql.binlog.impl.filter.BinlogRowEventFilterImpl;
-import org.dbsyncer.listener.mysql.common.glossary.Column;
-import org.dbsyncer.listener.mysql.common.glossary.Metadata;
-import org.dbsyncer.listener.mysql.common.glossary.Row;
-import org.dbsyncer.listener.mysql.common.glossary.column.*;
-import org.dbsyncer.listener.mysql.common.util.CodecUtils;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.MySQLUtils;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-public abstract class AbstractRowEventParser extends AbstractBinlogEventParser {
-    protected BinlogRowEventFilter rowEventFilter;
-
-    public AbstractRowEventParser(int eventType) {
-        super(eventType);
-        this.rowEventFilter = new BinlogRowEventFilterImpl();
-    }
-
-    public BinlogRowEventFilter getRowEventFilter() {
-        return rowEventFilter;
-    }
-
-    public AbstractRowEventParser setRowEventFilter(BinlogRowEventFilter filter) {
-        this.rowEventFilter = filter;
-        return this;
-    }
-
-    protected Row parseRow(XInputStream is, TableMapEvent tme, BitColumn usedColumns)
-            throws IOException {
-        int unusedColumnCount = 0;
-        final byte[] types = tme.getColumnTypes();
-        final Metadata metadata = tme.getColumnMetadata();
-        final int nColumnsUsed = usedColumns.getSetBitCount();
-        final BitColumn nullColumns = is.readBit(nColumnsUsed);
-        final List<Column> columns = new ArrayList<Column>(nColumnsUsed);
-        for (int i = 0; i < types.length; ++i) {
-            int length = 0;
-            final int meta = metadata.getMetadata(i);
-            int type = CodecUtils.toUnsigned(types[i]);
-            if (type == MySQLConstants.TYPE_STRING && meta > 256) {
-                final int meta0 = meta >> 8;
-                final int meta1 = meta & 0xFF;
-                if ((meta0 & 0x30) != 0x30) { // a long CHAR() field: see #37426
-                    type = meta0 | 0x30;
-                    length = meta1 | (((meta0 & 0x30) ^ 0x30) << 4);
-                } else {
-                    switch (meta0) {
-                        case MySQLConstants.TYPE_SET:
-                        case MySQLConstants.TYPE_ENUM:
-                        case MySQLConstants.TYPE_STRING:
-                            type = meta0;
-                            length = meta1;
-                            break;
-                        default:
-                            throw new RuntimeException("assertion failed, unknown column type: " + type);
-                    }
-                }
-            }
-
-            if (!usedColumns.get(i)) {
-                unusedColumnCount++;
-                continue;
-            } else if (nullColumns.get(i - unusedColumnCount)) {
-                columns.add(NullColumn.valueOf(type));
-                continue;
-            }
-
-            switch (type) {
-                case MySQLConstants.TYPE_TINY:
-                    columns.add(TinyColumn.valueOf(is.readSignedInt(1)));
-                    break;
-                case MySQLConstants.TYPE_SHORT:
-                    columns.add(ShortColumn.valueOf(is.readSignedInt(2)));
-                    break;
-                case MySQLConstants.TYPE_INT24:
-                    columns.add(Int24Column.valueOf(is.readSignedInt(3)));
-                    break;
-                case MySQLConstants.TYPE_LONG:
-                    columns.add(LongColumn.valueOf(is.readSignedInt(4)));
-                    break;
-                case MySQLConstants.TYPE_LONGLONG:
-                    columns.add(LongLongColumn.valueOf(is.readSignedLong(8)));
-                    break;
-                case MySQLConstants.TYPE_FLOAT:
-                    columns.add(FloatColumn.valueOf(Float.intBitsToFloat(is.readInt(4))));
-                    break;
-                case MySQLConstants.TYPE_DOUBLE:
-                    columns.add(DoubleColumn.valueOf(Double.longBitsToDouble(is.readLong(8))));
-                    break;
-                case MySQLConstants.TYPE_YEAR:
-                    columns.add(YearColumn.valueOf(MySQLUtils.toYear(is.readInt(1))));
-                    break;
-                case MySQLConstants.TYPE_DATE:
-                    columns.add(DateColumn.valueOf(MySQLUtils.toDate(is.readInt(3))));
-                    break;
-                case MySQLConstants.TYPE_TIME:
-                    columns.add(TimeColumn.valueOf(MySQLUtils.toTime(is.readInt(3))));
-                    break;
-                case MySQLConstants.TYPE_DATETIME:
-                    columns.add(DatetimeColumn.valueOf(is.readLong(8)));
-                    break;
-                case MySQLConstants.TYPE_TIMESTAMP:
-                    columns.add(TimestampColumn.valueOf(MySQLUtils.toTimestamp(is.readLong(4))));
-                    break;
-                case MySQLConstants.TYPE_ENUM:
-                    columns.add(EnumColumn.valueOf(is.readInt(length)));
-                    break;
-                case MySQLConstants.TYPE_SET:
-                    columns.add(SetColumn.valueOf(is.readLong(length)));
-                    break;
-                case MySQLConstants.TYPE_BIT:
-                    final int bitLength = (meta >> 8) * 8 + (meta & 0xFF);
-                    columns.add(is.readBit(bitLength, false));
-                    break;
-                case MySQLConstants.TYPE_BLOB:
-                    final int blobLength = is.readInt(meta);
-                    columns.add(is.readFixedLengthString(blobLength));
-                    break;
-                case MySQLConstants.TYPE_GEOMETRY:
-                    // 暂时不考虑该类型实现
-                    columns.add(null);
-//				final int geomLength = is.readInt(meta);
-//				final int _unknown = is.readInt(4);
-//				final WKBReader reader = new WKBReader();
-//
-//				try {
-//					final Geometry g = reader.read(is.readBytes(geomLength - 4));
-//					columns.add(GeometryColumn.valueOf(g));
-//				} catch ( ParseException e ) {
-//					throw new RuntimeException("Could not parse geometry, unknown column was " + _unknown, e);
-//				}
-                    break;
-                case MySQLConstants.TYPE_NEWDECIMAL:
-                    final int precision = meta & 0xFF;
-                    final int scale = meta >> 8;
-                    final int decimalLength = MySQLUtils.getDecimalBinarySize(precision, scale);
-                    columns.add(DecimalColumn.valueOf(MySQLUtils.toDecimal(precision, scale, is.readBytes(decimalLength)), precision, scale));
-                    break;
-                case MySQLConstants.TYPE_STRING:
-                    final int stringLength = length < 256 ? is.readInt(1) : is.readInt(2);
-                    columns.add(is.readFixedLengthString(stringLength));
-                    break;
-                case MySQLConstants.TYPE_VARCHAR:
-                case MySQLConstants.TYPE_VAR_STRING:
-                    final int varcharLength = meta < 256 ? is.readInt(1) : is.readInt(2);
-                    columns.add(is.readFixedLengthString(varcharLength));
-                    break;
-                case MySQLConstants.TYPE_TIME2:
-                    final int value1 = is.readInt(3, false);
-                    final int metaLength1 = (meta + 1) / 2;
-                    final int nanos1 = is.readInt(metaLength1, false);
-                    java.sql.Timestamp ts = MySQLUtils.time2toTimestamp(value1, nanos1, metaLength1);
-                    columns.add(Time2Column.valueOf(ts));
-                    break;
-                case MySQLConstants.TYPE_DATETIME2:
-                    final long value2 = is.readLong(5, false);
-                    final int metaLength2 = (meta + 1) / 2;
-                    final int nanos2 = is.readInt(metaLength2, false);
-                    java.sql.Timestamp ts2 = MySQLUtils.datetime2ToTimestamp(value2, nanos2, metaLength2);
-                    columns.add(Datetime2Column.valueOf(ts2));
-                    break;
-                case MySQLConstants.TYPE_TIMESTAMP2:
-                    final long value3 = is.readLong(4, false);
-                    final int metaLength3 = (meta + 1) / 2;
-                    final int nanos3 = is.readInt(metaLength3, false);
-                    columns.add(Timestamp2Column.valueOf(MySQLUtils.timestamp2ToTimestamp(value3, nanos3, metaLength3)));
-                    break;
-                default:
-                    throw new RuntimeException("assertion failed, unknown column type: " + type);
-            }
-        }
-        return new Row(columns);
-    }
-}

+ 0 - 47
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/DeleteRowsEventParser.java

@@ -1,47 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.parser;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.binlog.BinlogParserContext;
-import org.dbsyncer.listener.mysql.binlog.impl.event.DeleteRowsEvent;
-import org.dbsyncer.listener.mysql.binlog.impl.event.TableMapEvent;
-import org.dbsyncer.listener.mysql.common.glossary.Row;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-import java.util.LinkedList;
-import java.util.List;
-
-public class DeleteRowsEventParser extends AbstractRowEventParser {
-
-    public DeleteRowsEventParser() {
-        super(DeleteRowsEvent.EVENT_TYPE);
-    }
-
-    public void parse(XInputStream is, BinlogEventV4Header header, BinlogParserContext context)
-            throws IOException {
-        final long tableId = is.readLong(6);
-        final TableMapEvent tme = context.getTableMapEvent(tableId);
-        if (this.rowEventFilter != null && !this.rowEventFilter.accepts(header, context, tme)) {
-            is.skip(is.available());
-            return;
-        }
-
-        final DeleteRowsEvent event = new DeleteRowsEvent(header);
-        event.setBinlogFilename(context.getBinlogFileName());
-        event.setTableId(tableId);
-        event.setReserved(is.readInt(2));
-        event.setColumnCount(is.readUnsignedLong());
-        event.setUsedColumns(is.readBit(event.getColumnCount().intValue()));
-        event.setRows(parseRows(is, tme, event));
-        context.getEventListener().onEvents(event);
-    }
-
-    protected List<Row> parseRows(XInputStream is, TableMapEvent tme, DeleteRowsEvent dre)
-            throws IOException {
-        final List<Row> r = new LinkedList<Row>();
-        while (is.available() > 0) {
-            r.add(parseRow(is, tme, dre.getUsedColumns()));
-        }
-        return r;
-    }
-}

+ 0 - 49
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/DeleteRowsEventV2Parser.java

@@ -1,49 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.parser;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.binlog.BinlogParserContext;
-import org.dbsyncer.listener.mysql.binlog.impl.event.DeleteRowsEventV2;
-import org.dbsyncer.listener.mysql.binlog.impl.event.TableMapEvent;
-import org.dbsyncer.listener.mysql.common.glossary.Row;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-import java.util.LinkedList;
-import java.util.List;
-
-public class DeleteRowsEventV2Parser extends AbstractRowEventParser {
-
-    public DeleteRowsEventV2Parser() {
-        super(DeleteRowsEventV2.EVENT_TYPE);
-    }
-
-    public void parse(XInputStream is, BinlogEventV4Header header, BinlogParserContext context)
-            throws IOException {
-        final long tableId = is.readLong(6);
-        final TableMapEvent tme = context.getTableMapEvent(tableId);
-        if (this.rowEventFilter != null && !this.rowEventFilter.accepts(header, context, tme)) {
-            is.skip(is.available());
-            return;
-        }
-
-        final DeleteRowsEventV2 event = new DeleteRowsEventV2(header);
-        event.setBinlogFilename(context.getBinlogFileName());
-        event.setTableId(tableId);
-        event.setReserved(is.readInt(2));
-        event.setExtraInfoLength(is.readInt(2));
-        if (event.getExtraInfoLength() > 2) event.setExtraInfo(is.readBytes(event.getExtraInfoLength() - 2));
-        event.setColumnCount(is.readUnsignedLong());
-        event.setUsedColumns(is.readBit(event.getColumnCount().intValue()));
-        event.setRows(parseRows(is, tme, event));
-        context.getEventListener().onEvents(event);
-    }
-
-    protected List<Row> parseRows(XInputStream is, TableMapEvent tme, DeleteRowsEventV2 dre)
-            throws IOException {
-        final List<Row> r = new LinkedList<Row>();
-        while (is.available() > 0) {
-            r.add(parseRow(is, tme, dre.getUsedColumns()));
-        }
-        return r;
-    }
-}

+ 0 - 47
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/FormatDescriptionEventParser.java

@@ -1,47 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.parser;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.binlog.BinlogParserContext;
-import org.dbsyncer.listener.mysql.binlog.impl.event.FormatDescriptionEvent;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public class FormatDescriptionEventParser extends AbstractBinlogEventParser {
-
-    public FormatDescriptionEventParser() {
-        super(FormatDescriptionEvent.EVENT_TYPE);
-    }
-
-    public void parse(XInputStream is, BinlogEventV4Header header, BinlogParserContext context)
-            throws IOException {
-        final FormatDescriptionEvent event = new FormatDescriptionEvent(header);
-        event.setBinlogFilename(context.getBinlogFileName());
-        event.setBinlogVersion(is.readInt(2));
-        event.setServerVersion(is.readFixedLengthString(50));
-        event.setCreateTimestamp(is.readLong(4) * 1000L);
-        event.setHeaderLength(is.readInt(1));
-
-        int eventTypeLength = (int) (event.getHeader().getEventLength() - (event.getHeaderLength() + 57));
-        byte[] eventTypeBuffer;
-
-        if (event.checksumPossible()) {
-            eventTypeBuffer = is.readBytes(eventTypeLength - 4);
-        } else {
-            eventTypeBuffer = is.readBytes(eventTypeLength);
-        }
-
-        event.setEventTypes(eventTypeBuffer);
-
-        // for mysql 5.6, there will always be space for a checksum in the FormatDescriptionEvent, even if checksums are off,
-        // but our checksumming code will not have been active, so we don't bother to verify the checksum
-        // of the formatLogDescription event.
-
-        if (event.checksumPossible()) {
-            is.readBytes(4);
-        }
-
-        context.setChecksumEnabled(event.checksumEnabled());
-        context.getEventListener().onEvents(event);
-    }
-}

+ 0 - 47
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/GtidEventParser.java

@@ -1,47 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.parser;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.binlog.BinlogParserContext;
-import org.dbsyncer.listener.mysql.binlog.impl.event.GtidEvent;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-/**
- * <h3>GTID Event</h3>
- * <ol type="1">
- * <li><dt>Event format:</dt></li>
- * <pre>
- *    +-------------------+
- *    | 1B commit flag    |
- *    +-------------------+
- *    | 16B Source ID     |
- *    +-------------------+
- *    | 8B Txn ID         |
- *    +-------------------+
- *    | ...               |
- *    +-------------------+
- *  </pre>
- * </ol>
- *
- * @ClassName: GtidEventParser
- * @author: AE86
- * @date: 2018年10月17日 下午2:33:19
- */
-public class GtidEventParser extends AbstractBinlogEventParser {
-
-    public GtidEventParser() {
-        super(MySQLConstants.GTID_LOG_EVENT);
-    }
-
-    public void parse(XInputStream is, BinlogEventV4Header header, BinlogParserContext context) throws IOException {
-        GtidEvent event = new GtidEvent(header);
-        is.readBytes(1); // commit flag, always true
-        event.setSourceId(is.readBytes(16));
-        event.setTransactionId(is.readLong(8, true));
-        //event.setTransactionId(ByteBuffer.wrap(is.readBytes(8)).order(ByteOrder.LITTLE_ENDIAN).getLong());
-        is.skip(is.available()); // position at next event
-        context.getEventListener().onEvents(event);
-    }
-}

+ 0 - 25
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/IncidentEventParser.java

@@ -1,25 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.parser;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.binlog.BinlogParserContext;
-import org.dbsyncer.listener.mysql.binlog.impl.event.IncidentEvent;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public class IncidentEventParser extends AbstractBinlogEventParser {
-
-    public IncidentEventParser() {
-        super(IncidentEvent.EVENT_TYPE);
-    }
-
-    public void parse(XInputStream is, BinlogEventV4Header header, BinlogParserContext context)
-            throws IOException {
-        final IncidentEvent event = new IncidentEvent(header);
-        event.setBinlogFilename(context.getBinlogFileName());
-        event.setIncidentNumber(is.readInt(1));
-        event.setMessageLength(is.readInt(1));
-        if (event.getMessageLength() > 0) event.setMessage(is.readFixedLengthString(event.getMessageLength()));
-        context.getEventListener().onEvents(event);
-    }
-}

+ 0 - 25
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/IntvarEventParser.java

@@ -1,25 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.parser;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.binlog.BinlogParserContext;
-import org.dbsyncer.listener.mysql.binlog.impl.event.IntvarEvent;
-import org.dbsyncer.listener.mysql.common.glossary.UnsignedLong;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public class IntvarEventParser extends AbstractBinlogEventParser {
-
-    public IntvarEventParser() {
-        super(IntvarEvent.EVENT_TYPE);
-    }
-
-    public void parse(XInputStream is, BinlogEventV4Header header, BinlogParserContext context)
-            throws IOException {
-        final IntvarEvent event = new IntvarEvent(header);
-        event.setBinlogFilename(context.getBinlogFileName());
-        event.setType(is.readInt(1));
-        event.setValue(UnsignedLong.valueOf(is.readLong(8)));
-        context.getEventListener().onEvents(event);
-    }
-}

+ 0 - 21
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/NopEventParser.java

@@ -1,21 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.parser;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventParser;
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.binlog.BinlogParserContext;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public final class NopEventParser implements BinlogEventParser {
-
-    public int getEventType() {
-        throw new UnsupportedOperationException();
-    }
-
-    public void parse(XInputStream is, BinlogEventV4Header header, BinlogParserContext context)
-            throws IOException {
-        final int available = is.available();
-        is.skip(available);
-    }
-}

+ 0 - 97
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/QueryEventParser.java

@@ -1,97 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.parser;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.binlog.BinlogParserContext;
-import org.dbsyncer.listener.mysql.binlog.StatusVariable;
-import org.dbsyncer.listener.mysql.binlog.impl.event.QueryEvent;
-import org.dbsyncer.listener.mysql.binlog.impl.variable.status.*;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-import org.dbsyncer.listener.mysql.io.util.XDeserializer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-public class QueryEventParser extends AbstractBinlogEventParser {
-    private static final Logger LOGGER = LoggerFactory.getLogger(QueryEventParser.class);
-
-    public QueryEventParser() {
-        super(QueryEvent.EVENT_TYPE);
-    }
-
-    public void parse(XInputStream is, BinlogEventV4Header header, BinlogParserContext context)
-            throws IOException {
-        final QueryEvent event = new QueryEvent(header);
-        event.setBinlogFilename(context.getBinlogFileName());
-        event.setThreadId(is.readLong(4));
-        event.setElapsedTime(is.readLong(4));
-        event.setDatabaseNameLength(is.readInt(1));
-        event.setErrorCode(is.readInt(2));
-        event.setStatusVariablesLength(is.readInt(2));
-        event.setStatusVariables(parseStatusVariables(is.readBytes(event.getStatusVariablesLength())));
-        event.setDatabaseName(is.readNullTerminatedString());
-        event.setSql(is.readFixedLengthString(is.available()));
-        context.getEventListener().onEvents(event);
-    }
-
-    protected List<StatusVariable> parseStatusVariables(byte[] data)
-            throws IOException {
-        final List<StatusVariable> r = new ArrayList<StatusVariable>();
-        final XDeserializer d = new XDeserializer(data);
-        boolean abort = false;
-        while (!abort && d.available() > 0) {
-            final int type = d.readInt(1);
-            switch (type) {
-                case QAutoIncrement.TYPE:
-                    r.add(QAutoIncrement.valueOf(d));
-                    break;
-                case QCatalogCode.TYPE:
-                    r.add(QCatalogCode.valueOf(d));
-                    break;
-                case QCatalogNzCode.TYPE:
-                    r.add(QCatalogNzCode.valueOf(d));
-                    break;
-                case QCharsetCode.TYPE:
-                    r.add(QCharsetCode.valueOf(d));
-                    break;
-                case QCharsetDatabaseCode.TYPE:
-                    r.add(QCharsetDatabaseCode.valueOf(d));
-                    break;
-                case QFlags2Code.TYPE:
-                    r.add(QFlags2Code.valueOf(d));
-                    break;
-                case QLcTimeNamesCode.TYPE:
-                    r.add(QLcTimeNamesCode.valueOf(d));
-                    break;
-                case QSQLModeCode.TYPE:
-                    r.add(QSQLModeCode.valueOf(d));
-                    break;
-                case QTableMapForUpdateCode.TYPE:
-                    r.add(QTableMapForUpdateCode.valueOf(d));
-                    break;
-                case QTimeZoneCode.TYPE:
-                    r.add(QTimeZoneCode.valueOf(d));
-                    break;
-                case QMasterDataWrittenCode.TYPE:
-                    r.add(QMasterDataWrittenCode.valueOf(d));
-                    break;
-                case QInvoker.TYPE:
-                    r.add(QInvoker.valueOf(d));
-                    break;
-                case QUpdatedDBNames.TYPE:
-                    r.add(QUpdatedDBNames.valueOf(d));
-                    break;
-                case QMicroseconds.TYPE:
-                    r.add(QMicroseconds.valueOf(d));
-                    break;
-                default:
-                    LOGGER.warn("unknown status variable type: " + type);
-                    abort = true;
-                    break;
-            }
-        }
-        return r;
-    }
-}

+ 0 - 24
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/RandEventParser.java

@@ -1,24 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.parser;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.binlog.BinlogParserContext;
-import org.dbsyncer.listener.mysql.binlog.impl.event.RandEvent;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public class RandEventParser extends AbstractBinlogEventParser {
-
-    public RandEventParser() {
-        super(RandEvent.EVENT_TYPE);
-    }
-
-    public void parse(XInputStream is, BinlogEventV4Header header, BinlogParserContext context)
-            throws IOException {
-        final RandEvent event = new RandEvent(header);
-        event.setBinlogFilename(context.getBinlogFileName());
-        event.setRandSeed1(is.readLong(8));
-        event.setRandSeed2(is.readLong(8));
-        context.getEventListener().onEvents(event);
-    }
-}

+ 0 - 24
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/RotateEventParser.java

@@ -1,24 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.parser;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.binlog.BinlogParserContext;
-import org.dbsyncer.listener.mysql.binlog.impl.event.RotateEvent;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public class RotateEventParser extends AbstractBinlogEventParser {
-
-    public RotateEventParser() {
-        super(RotateEvent.EVENT_TYPE);
-    }
-
-    public void parse(XInputStream is, BinlogEventV4Header header, BinlogParserContext context)
-            throws IOException {
-        final RotateEvent event = new RotateEvent(header);
-        event.setBinlogFilename(context.getBinlogFileName());
-        event.setBinlogPosition(is.readLong(8));
-        event.setBinlogFileName(is.readFixedLengthString(is.available()));
-        context.getEventListener().onEvents(event);
-    }
-}

+ 0 - 22
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/StopEventParser.java

@@ -1,22 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.parser;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.binlog.BinlogParserContext;
-import org.dbsyncer.listener.mysql.binlog.impl.event.StopEvent;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public class StopEventParser extends AbstractBinlogEventParser {
-
-    public StopEventParser() {
-        super(StopEvent.EVENT_TYPE);
-    }
-
-    public void parse(XInputStream is, BinlogEventV4Header header, BinlogParserContext context)
-            throws IOException {
-        final StopEvent event = new StopEvent(header);
-        event.setBinlogFilename(context.getBinlogFileName());
-        context.getEventListener().onEvents(event);
-    }
-}

+ 0 - 53
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/TableMapEventParser.java

@@ -1,53 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.parser;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.binlog.BinlogParserContext;
-import org.dbsyncer.listener.mysql.binlog.impl.event.TableMapEvent;
-import org.dbsyncer.listener.mysql.common.glossary.Metadata;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public class TableMapEventParser extends AbstractBinlogEventParser {
-    private boolean reusePreviousEvent = true;
-
-    public TableMapEventParser() {
-        super(TableMapEvent.EVENT_TYPE);
-    }
-
-    public boolean isReusePreviousEvent() {
-        return reusePreviousEvent;
-    }
-
-    public void setReusePreviousEvent(boolean reusePreviousEvent) {
-        this.reusePreviousEvent = reusePreviousEvent;
-    }
-
-    public void parse(XInputStream is, BinlogEventV4Header header, BinlogParserContext context)
-            throws IOException {
-        final long tableId = is.readLong(6);
-        if (this.reusePreviousEvent && context.getTableMapEvent(tableId) != null) {
-            is.skip(is.available());
-            final TableMapEvent event = context.getTableMapEvent(tableId).copy();
-            event.setHeader(header);
-            event.setBinlogFilename(context.getBinlogFileName());
-            context.getEventListener().onEvents(event);
-            return;
-        }
-
-        final TableMapEvent event = new TableMapEvent(header);
-        event.setBinlogFilename(context.getBinlogFileName());
-        event.setTableId(tableId);
-        event.setReserved(is.readInt(2));
-        event.setDatabaseNameLength(is.readInt(1));
-        event.setDatabaseName(is.readNullTerminatedString());
-        event.setTableNameLength(is.readInt(1));
-        event.setTableName(is.readNullTerminatedString());
-        event.setColumnCount(is.readUnsignedLong());
-        event.setColumnTypes(is.readBytes(event.getColumnCount().intValue()));
-        event.setColumnMetadataCount(is.readUnsignedLong());
-        event.setColumnMetadata(Metadata.valueOf(event.getColumnTypes(), is.readBytes(event.getColumnMetadataCount().intValue())));
-        event.setColumnNullabilities(is.readBit(event.getColumnCount().intValue()));
-        context.getEventListener().onEvents(event);
-    }
-}

+ 0 - 51
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/UpdateRowsEventParser.java

@@ -1,51 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.parser;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.binlog.BinlogParserContext;
-import org.dbsyncer.listener.mysql.binlog.impl.event.TableMapEvent;
-import org.dbsyncer.listener.mysql.binlog.impl.event.UpdateRowsEvent;
-import org.dbsyncer.listener.mysql.common.glossary.Pair;
-import org.dbsyncer.listener.mysql.common.glossary.Row;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-import java.util.LinkedList;
-import java.util.List;
-
-public class UpdateRowsEventParser extends AbstractRowEventParser {
-
-    public UpdateRowsEventParser() {
-        super(UpdateRowsEvent.EVENT_TYPE);
-    }
-
-    public void parse(XInputStream is, BinlogEventV4Header header, BinlogParserContext context)
-            throws IOException {
-        final long tableId = is.readLong(6);
-        final TableMapEvent tme = context.getTableMapEvent(tableId);
-        if (this.rowEventFilter != null && !this.rowEventFilter.accepts(header, context, tme)) {
-            is.skip(is.available());
-            return;
-        }
-
-        final UpdateRowsEvent event = new UpdateRowsEvent(header);
-        event.setBinlogFilename(context.getBinlogFileName());
-        event.setTableId(tableId);
-        event.setReserved(is.readInt(2));
-        event.setColumnCount(is.readUnsignedLong());
-        event.setUsedColumnsBefore(is.readBit(event.getColumnCount().intValue()));
-        event.setUsedColumnsAfter(is.readBit(event.getColumnCount().intValue()));
-        event.setRows(parseRows(is, tme, event));
-        context.getEventListener().onEvents(event);
-    }
-
-    protected List<Pair<Row>> parseRows(XInputStream is, TableMapEvent tme, UpdateRowsEvent ure)
-            throws IOException {
-        final List<Pair<Row>> r = new LinkedList<Pair<Row>>();
-        while (is.available() > 0) {
-            final Row before = parseRow(is, tme, ure.getUsedColumnsBefore());
-            final Row after = parseRow(is, tme, ure.getUsedColumnsAfter());
-            r.add(new Pair<Row>(before, after));
-        }
-        return r;
-    }
-}

+ 0 - 53
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/UpdateRowsEventV2Parser.java

@@ -1,53 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.parser;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.binlog.BinlogParserContext;
-import org.dbsyncer.listener.mysql.binlog.impl.event.TableMapEvent;
-import org.dbsyncer.listener.mysql.binlog.impl.event.UpdateRowsEventV2;
-import org.dbsyncer.listener.mysql.common.glossary.Pair;
-import org.dbsyncer.listener.mysql.common.glossary.Row;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-import java.util.LinkedList;
-import java.util.List;
-
-public class UpdateRowsEventV2Parser extends AbstractRowEventParser {
-
-    public UpdateRowsEventV2Parser() {
-        super(UpdateRowsEventV2.EVENT_TYPE);
-    }
-
-    public void parse(XInputStream is, BinlogEventV4Header header, BinlogParserContext context)
-            throws IOException {
-        final long tableId = is.readLong(6);
-        final TableMapEvent tme = context.getTableMapEvent(tableId);
-        if (this.rowEventFilter != null && !this.rowEventFilter.accepts(header, context, tme)) {
-            is.skip(is.available());
-            return;
-        }
-
-        final UpdateRowsEventV2 event = new UpdateRowsEventV2(header);
-        event.setBinlogFilename(context.getBinlogFileName());
-        event.setTableId(tableId);
-        event.setReserved(is.readInt(2));
-        event.setExtraInfoLength(is.readInt(2));
-        if (event.getExtraInfoLength() > 2) event.setExtraInfo(is.readBytes(event.getExtraInfoLength() - 2));
-        event.setColumnCount(is.readUnsignedLong());
-        event.setUsedColumnsBefore(is.readBit(event.getColumnCount().intValue()));
-        event.setUsedColumnsAfter(is.readBit(event.getColumnCount().intValue()));
-        event.setRows(parseRows(is, tme, event));
-        context.getEventListener().onEvents(event);
-    }
-
-    protected List<Pair<Row>> parseRows(XInputStream is, TableMapEvent tme, UpdateRowsEventV2 ure)
-            throws IOException {
-        final List<Pair<Row>> r = new LinkedList<Pair<Row>>();
-        while (is.available() > 0) {
-            final Row before = parseRow(is, tme, ure.getUsedColumnsBefore());
-            final Row after = parseRow(is, tme, ure.getUsedColumnsAfter());
-            r.add(new Pair<Row>(before, after));
-        }
-        return r;
-    }
-}

+ 0 - 56
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/UserVarEventParser.java

@@ -1,56 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.parser;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.binlog.BinlogParserContext;
-import org.dbsyncer.listener.mysql.binlog.UserVariable;
-import org.dbsyncer.listener.mysql.binlog.impl.event.UserVarEvent;
-import org.dbsyncer.listener.mysql.binlog.impl.variable.user.*;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-
-public class UserVarEventParser extends AbstractBinlogEventParser {
-    private static final Logger LOGGER = LoggerFactory.getLogger(UserVarEventParser.class);
-
-    public UserVarEventParser() {
-        super(UserVarEvent.EVENT_TYPE);
-    }
-
-    public void parse(XInputStream is, BinlogEventV4Header header, BinlogParserContext context)
-            throws IOException {
-        final UserVarEvent event = new UserVarEvent(header);
-        event.setBinlogFilename(context.getBinlogFileName());
-        event.setVarNameLength(is.readInt(4));
-        event.setVarName(is.readFixedLengthString(event.getVarNameLength()));
-        event.setIsNull(is.readInt(1));
-        if (event.getIsNull() == 0) {
-            event.setVarType(is.readInt(1));
-            event.setVarCollation(is.readInt(4));
-            event.setVarValueLength(is.readInt(4));
-            event.setVarValue(parseUserVariable(is, event));
-        }
-        context.getEventListener().onEvents(event);
-    }
-
-    protected UserVariable parseUserVariable(XInputStream is, UserVarEvent event)
-            throws IOException {
-        final int type = event.getVarType();
-        switch (type) {
-            case UserVariableDecimal.TYPE:
-                return new UserVariableDecimal(is.readBytes(event.getVarValueLength()));
-            case UserVariableInt.TYPE:
-                return new UserVariableInt(is.readLong(event.getVarValueLength()), is.readInt(1));
-            case UserVariableReal.TYPE:
-                return new UserVariableReal(Double.longBitsToDouble(is.readLong(event.getVarValueLength())));
-            case UserVariableRow.TYPE:
-                return new UserVariableRow(is.readBytes(event.getVarValueLength()));
-            case UserVariableString.TYPE:
-                return new UserVariableString(is.readBytes(event.getVarValueLength()), event.getVarCollation());
-            default:
-                LOGGER.warn("unknown user variable type: " + type);
-                return null;
-        }
-    }
-}

+ 0 - 48
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/WriteRowsEventParser.java

@@ -1,48 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.parser;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.binlog.BinlogParserContext;
-import org.dbsyncer.listener.mysql.binlog.impl.event.TableMapEvent;
-import org.dbsyncer.listener.mysql.binlog.impl.event.WriteRowsEvent;
-import org.dbsyncer.listener.mysql.common.glossary.Row;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-import java.util.LinkedList;
-import java.util.List;
-
-public class WriteRowsEventParser extends AbstractRowEventParser {
-
-    public WriteRowsEventParser() {
-        super(WriteRowsEvent.EVENT_TYPE);
-    }
-
-    public void parse(XInputStream is, BinlogEventV4Header header, BinlogParserContext context)
-            throws IOException {
-        //
-        final long tableId = is.readLong(6);
-        final TableMapEvent tme = context.getTableMapEvent(tableId);
-        if (this.rowEventFilter != null && !this.rowEventFilter.accepts(header, context, tme)) {
-            is.skip(is.available());
-            return;
-        }
-
-        final WriteRowsEvent event = new WriteRowsEvent(header);
-        event.setBinlogFilename(context.getBinlogFileName());
-        event.setTableId(tableId);
-        event.setReserved(is.readInt(2));
-        event.setColumnCount(is.readUnsignedLong());
-        event.setUsedColumns(is.readBit(event.getColumnCount().intValue()));
-        event.setRows(parseRows(is, tme, event));
-        context.getEventListener().onEvents(event);
-    }
-
-    protected List<Row> parseRows(XInputStream is, TableMapEvent tme, WriteRowsEvent wre)
-            throws IOException {
-        final List<Row> r = new LinkedList<Row>();
-        while (is.available() > 0) {
-            r.add(parseRow(is, tme, wre.getUsedColumns()));
-        }
-        return r;
-    }
-}

+ 0 - 51
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/WriteRowsEventV2Parser.java

@@ -1,51 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.parser;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.binlog.BinlogParserContext;
-import org.dbsyncer.listener.mysql.binlog.impl.event.TableMapEvent;
-import org.dbsyncer.listener.mysql.binlog.impl.event.WriteRowsEventV2;
-import org.dbsyncer.listener.mysql.common.glossary.Row;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-import java.util.LinkedList;
-import java.util.List;
-
-public class WriteRowsEventV2Parser extends AbstractRowEventParser {
-
-    public WriteRowsEventV2Parser() {
-        super(WriteRowsEventV2.EVENT_TYPE);
-    }
-
-    public void parse(XInputStream is, BinlogEventV4Header header, BinlogParserContext context)
-            throws IOException {
-        final long tableId = is.readLong(6);
-        final TableMapEvent tme = context.getTableMapEvent(tableId);
-
-
-        if (this.rowEventFilter != null && !this.rowEventFilter.accepts(header, context, tme)) {
-            is.skip(is.available());
-            return;
-        }
-
-        final WriteRowsEventV2 event = new WriteRowsEventV2(header);
-        event.setBinlogFilename(context.getBinlogFileName());
-        event.setTableId(tableId);
-        event.setReserved(is.readInt(2));
-        event.setExtraInfoLength(is.readInt(2));
-        if (event.getExtraInfoLength() > 2) event.setExtraInfo(is.readBytes(event.getExtraInfoLength() - 2));
-        event.setColumnCount(is.readUnsignedLong());
-        event.setUsedColumns(is.readBit(event.getColumnCount().intValue()));
-        event.setRows(parseRows(is, tme, event));
-        context.getEventListener().onEvents(event);
-    }
-
-    protected List<Row> parseRows(XInputStream is, TableMapEvent tme, WriteRowsEventV2 wre)
-            throws IOException {
-        final List<Row> r = new LinkedList<Row>();
-        while (is.available() > 0) {
-            r.add(parseRow(is, tme, wre.getUsedColumns()));
-        }
-        return r;
-    }
-}

+ 0 - 32
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/parser/XidEventParser.java

@@ -1,32 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.parser;
-
-import org.dbsyncer.listener.mysql.binlog.BinlogEventV4Header;
-import org.dbsyncer.listener.mysql.binlog.BinlogParserContext;
-import org.dbsyncer.listener.mysql.binlog.impl.event.XidEvent;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public class XidEventParser extends AbstractBinlogEventParser {
-
-    public XidEventParser() {
-        super(XidEvent.EVENT_TYPE);
-    }
-
-    /**
-     * Note: Contrary to all other numeric fields, the XID transaction number is not always
-     * written in little-endian format. The bytes are copied unmodified from memory to disk,
-     * so the format is machine-dependent. Hence, when replicating from a little-endian to a
-     * big-endian machine (or vice versa), the numeric value of transaction numbers will differ.
-     * In particular, the output of mysqlbinlog differs. This should does not cause inconsistencies
-     * in replication because the only important property of transaction numbers is that different
-     * transactions have different numbers (relative order does not matter).
-     */
-    public void parse(XInputStream is, BinlogEventV4Header header, BinlogParserContext context)
-            throws IOException {
-        final XidEvent event = new XidEvent(header);
-        event.setBinlogFilename(context.getBinlogFileName());
-        event.setXid(is.readLong(8));
-        context.getEventListener().onEvents(event);
-    }
-}

+ 0 - 21
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/AbstractStatusVariable.java

@@ -1,21 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.variable.status;
-
-import org.dbsyncer.listener.mysql.binlog.StatusVariable;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-public abstract class AbstractStatusVariable implements StatusVariable {
-    protected final int type;
-
-    public AbstractStatusVariable(int type) {
-        this.type = type;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this).toString();
-    }
-
-    public int getType() {
-        return type;
-    }
-}

+ 0 - 41
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QAutoIncrement.java

@@ -1,41 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.variable.status;
-
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public class QAutoIncrement extends AbstractStatusVariable {
-    public static final int TYPE = MySQLConstants.Q_AUTO_INCREMENT;
-
-    private final int autoIncrementIncrement;
-    private final int autoIncrementOffset;
-
-    public QAutoIncrement(int autoIncrementIncrement, int autoIncrementOffset) {
-        super(TYPE);
-        this.autoIncrementIncrement = autoIncrementIncrement;
-        this.autoIncrementOffset = autoIncrementOffset;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("autoIncrementIncrement", autoIncrementIncrement)
-                .append("autoIncrementOffset", autoIncrementOffset).toString();
-    }
-
-    public int getAutoIncrementIncrement() {
-        return autoIncrementIncrement;
-    }
-
-    public int getAutoIncrementOffset() {
-        return autoIncrementOffset;
-    }
-
-    public static QAutoIncrement valueOf(XInputStream tis) throws IOException {
-        final int autoIncrementIncrement = tis.readInt(2);
-        final int autoIncrementOffset = tis.readInt(2);
-        return new QAutoIncrement(autoIncrementIncrement, autoIncrementOffset);
-    }
-}

+ 0 - 34
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QCatalogCode.java

@@ -1,34 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.variable.status;
-
-import org.dbsyncer.listener.mysql.common.glossary.column.StringColumn;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public class QCatalogCode extends AbstractStatusVariable {
-    public static final int TYPE = MySQLConstants.Q_CATALOG_CODE;
-
-    private final StringColumn catalogName;
-
-    public QCatalogCode(StringColumn catalogName) {
-        super(TYPE);
-        this.catalogName = catalogName;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("catalogName", catalogName).toString();
-    }
-
-    public StringColumn getCatalogName() {
-        return catalogName;
-    }
-
-    public static QCatalogCode valueOf(XInputStream tis) throws IOException {
-        tis.readInt(1); // Length
-        return new QCatalogCode(tis.readNullTerminatedString());
-    }
-}

+ 0 - 34
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QCatalogNzCode.java

@@ -1,34 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.variable.status;
-
-import org.dbsyncer.listener.mysql.common.glossary.column.StringColumn;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public class QCatalogNzCode extends AbstractStatusVariable {
-    public static final int TYPE = MySQLConstants.Q_CATALOG_NZ_CODE;
-
-    private final StringColumn catalogName;
-
-    public QCatalogNzCode(StringColumn catalogName) {
-        super(TYPE);
-        this.catalogName = catalogName;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("catalogName", catalogName).toString();
-    }
-
-    public StringColumn getCatalogName() {
-        return catalogName;
-    }
-
-    public static QCatalogNzCode valueOf(XInputStream tis) throws IOException {
-        final int length = tis.readInt(1); // Length
-        return new QCatalogNzCode(tis.readFixedLengthString(length));
-    }
-}

+ 0 - 49
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QCharsetCode.java

@@ -1,49 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.variable.status;
-
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public class QCharsetCode extends AbstractStatusVariable {
-    public static final int TYPE = MySQLConstants.Q_CHARSET_CODE;
-
-    private final int characterSetClient;
-    private final int collationConnection;
-    private final int collationServer;
-
-    public QCharsetCode(int characterSetClient, int collationConnection, int collationServer) {
-        super(TYPE);
-        this.characterSetClient = characterSetClient;
-        this.collationConnection = collationConnection;
-        this.collationServer = collationServer;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("characterSetClient", characterSetClient)
-                .append("collationConnection", collationConnection)
-                .append("collationServer", collationServer).toString();
-    }
-
-    public int getCharacterSetClient() {
-        return characterSetClient;
-    }
-
-    public int getCollationConnection() {
-        return collationConnection;
-    }
-
-    public int getCollationServer() {
-        return collationServer;
-    }
-
-    public static QCharsetCode valueOf(XInputStream tis) throws IOException {
-        final int characterSetClient = tis.readInt(2);
-        final int collationConnection = tis.readInt(2);
-        final int collationServer = tis.readInt(2);
-        return new QCharsetCode(characterSetClient, collationConnection, collationServer);
-    }
-}

+ 0 - 33
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QCharsetDatabaseCode.java

@@ -1,33 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.variable.status;
-
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public class QCharsetDatabaseCode extends AbstractStatusVariable {
-    public static final int TYPE = MySQLConstants.Q_CHARSET_DATABASE_CODE;
-
-    private final int collationDatabase;
-
-    public QCharsetDatabaseCode(int collationDatabase) {
-        super(TYPE);
-        this.collationDatabase = collationDatabase;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("collationDatabase", collationDatabase).toString();
-    }
-
-    public int getCollationDatabase() {
-        return collationDatabase;
-    }
-
-    public static QCharsetDatabaseCode valueOf(XInputStream tis) throws IOException {
-        final int collationDatabase = tis.readInt(2);
-        return new QCharsetDatabaseCode(collationDatabase);
-    }
-}

+ 0 - 32
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QFlags2Code.java

@@ -1,32 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.variable.status;
-
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public class QFlags2Code extends AbstractStatusVariable {
-    public static final int TYPE = MySQLConstants.Q_FLAGS2_CODE;
-
-    private final int flags;
-
-    public QFlags2Code(int flags) {
-        super(TYPE);
-        this.flags = flags;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("flags", flags).toString();
-    }
-
-    public int getFlags() {
-        return flags;
-    }
-
-    public static QFlags2Code valueOf(XInputStream tis) throws IOException {
-        return new QFlags2Code(tis.readInt(4));
-    }
-}

+ 0 - 44
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QInvoker.java

@@ -1,44 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.variable.status;
-
-import org.dbsyncer.listener.mysql.common.glossary.column.StringColumn;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public class QInvoker extends AbstractStatusVariable {
-    public static final int TYPE = MySQLConstants.Q_INVOKER;
-
-    private final StringColumn user;
-    private final StringColumn host;
-
-    public QInvoker(StringColumn user, StringColumn host) {
-        super(TYPE);
-        this.user = user;
-        this.host = host;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("user", user)
-                .append("host", host).toString();
-    }
-
-    public StringColumn getUser() {
-        return user;
-    }
-
-    public StringColumn getHost() {
-        return host;
-    }
-
-    public static QInvoker valueOf(XInputStream tis) throws IOException {
-        final int userLength = tis.readInt(1);
-        final StringColumn user = tis.readFixedLengthString(userLength);
-        final int hostLength = tis.readInt(1);
-        final StringColumn host = tis.readFixedLengthString(hostLength);
-        return new QInvoker(user, host);
-    }
-}

+ 0 - 32
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QLcTimeNamesCode.java

@@ -1,32 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.variable.status;
-
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public class QLcTimeNamesCode extends AbstractStatusVariable {
-    public static final int TYPE = MySQLConstants.Q_LC_TIME_NAMES_CODE;
-
-    private final int lcTimeNames;
-
-    public QLcTimeNamesCode(int lcTimeNames) {
-        super(TYPE);
-        this.lcTimeNames = lcTimeNames;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("lcTimeNames", lcTimeNames).toString();
-    }
-
-    public int getLcTimeNames() {
-        return lcTimeNames;
-    }
-
-    public static QLcTimeNamesCode valueOf(XInputStream tis) throws IOException {
-        return new QLcTimeNamesCode(tis.readInt(2));
-    }
-}

+ 0 - 32
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QMasterDataWrittenCode.java

@@ -1,32 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.variable.status;
-
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public class QMasterDataWrittenCode extends AbstractStatusVariable {
-    public static final int TYPE = MySQLConstants.Q_MASTER_DATA_WRITTEN_CODE;
-
-    private final int value;
-
-    public QMasterDataWrittenCode(int value) {
-        super(TYPE);
-        this.value = value;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("value", value).toString();
-    }
-
-    public int getValue() {
-        return value;
-    }
-
-    public static QMasterDataWrittenCode valueOf(XInputStream tis) throws IOException {
-        return new QMasterDataWrittenCode(tis.readInt(4));
-    }
-}

+ 0 - 32
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QMicroseconds.java

@@ -1,32 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.variable.status;
-
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public class QMicroseconds extends AbstractStatusVariable {
-    public static final int TYPE = MySQLConstants.Q_MICROSECONDS;
-
-    private final int startUsec;
-
-    public QMicroseconds(int startUsec) {
-        super(TYPE);
-        this.startUsec = startUsec;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("startUsec", startUsec).toString();
-    }
-
-    public int getStartUsec() {
-        return startUsec;
-    }
-
-    public static QMicroseconds valueOf(XInputStream tis) throws IOException {
-        return new QMicroseconds(tis.readInt(3));
-    }
-}

+ 0 - 32
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QSQLModeCode.java

@@ -1,32 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.variable.status;
-
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public class QSQLModeCode extends AbstractStatusVariable {
-    public static final int TYPE = MySQLConstants.Q_SQL_MODE_CODE;
-
-    private final long sqlMode;
-
-    public QSQLModeCode(long sqlMode) {
-        super(TYPE);
-        this.sqlMode = sqlMode;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("sqlMode", sqlMode).toString();
-    }
-
-    public long getSqlMode() {
-        return sqlMode;
-    }
-
-    public static QSQLModeCode valueOf(XInputStream tis) throws IOException {
-        return new QSQLModeCode(tis.readLong(8));
-    }
-}

+ 0 - 32
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QTableMapForUpdateCode.java

@@ -1,32 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.variable.status;
-
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public class QTableMapForUpdateCode extends AbstractStatusVariable {
-    public static final int TYPE = MySQLConstants.Q_TABLE_MAP_FOR_UPDATE_CODE;
-
-    private final long tableMap;
-
-    public QTableMapForUpdateCode(long tableMap) {
-        super(TYPE);
-        this.tableMap = tableMap;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("tableMap", tableMap).toString();
-    }
-
-    public long getTableMap() {
-        return tableMap;
-    }
-
-    public static QTableMapForUpdateCode valueOf(XInputStream tis) throws IOException {
-        return new QTableMapForUpdateCode(tis.readLong(8));
-    }
-}

+ 0 - 34
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QTimeZoneCode.java

@@ -1,34 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.variable.status;
-
-import org.dbsyncer.listener.mysql.common.glossary.column.StringColumn;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public class QTimeZoneCode extends AbstractStatusVariable {
-    public static final int TYPE = MySQLConstants.Q_TIME_ZONE_CODE;
-
-    private final StringColumn timeZone;
-
-    public QTimeZoneCode(StringColumn timeZone) {
-        super(TYPE);
-        this.timeZone = timeZone;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("timeZone", timeZone).toString();
-    }
-
-    public StringColumn getTimeZone() {
-        return timeZone;
-    }
-
-    public static QTimeZoneCode valueOf(XInputStream tis) throws IOException {
-        final int length = tis.readInt(1); // Length
-        return new QTimeZoneCode(tis.readFixedLengthString(length));
-    }
-}

+ 0 - 50
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/status/QUpdatedDBNames.java

@@ -1,50 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.variable.status;
-
-import org.dbsyncer.listener.mysql.common.glossary.column.StringColumn;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-import org.dbsyncer.listener.mysql.io.XInputStream;
-
-import java.io.IOException;
-
-public class QUpdatedDBNames extends AbstractStatusVariable {
-    public static final int TYPE = MySQLConstants.Q_UPDATED_DB_NAMES;
-
-    private final int accessedDbCount;
-    private final StringColumn[] accessedDbs;
-
-    public QUpdatedDBNames(int accessedDbCount, StringColumn[] accessedDbs) {
-        super(TYPE);
-        this.accessedDbCount = accessedDbCount;
-        this.accessedDbs = accessedDbs;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("accessedDbCount", accessedDbCount)
-                .append("accessedDbs", accessedDbs).toString();
-    }
-
-    public int getAccessedDbCount() {
-        return accessedDbCount;
-    }
-
-    public StringColumn[] getAccessedDbs() {
-        return accessedDbs;
-    }
-
-    public static QUpdatedDBNames valueOf(XInputStream tis) throws IOException {
-        int accessedDbCount = tis.readInt(1);
-        StringColumn accessedDbs[] = null;
-        if (accessedDbCount > MySQLConstants.MAX_DBS_IN_EVENT_MTS) {
-            accessedDbCount = MySQLConstants.OVER_MAX_DBS_IN_EVENT_MTS;
-        } else {
-            accessedDbs = new StringColumn[accessedDbCount];
-            for (int i = 0; i < accessedDbCount; i++) {
-                accessedDbs[i] = tis.readNullTerminatedString();
-            }
-        }
-        return new QUpdatedDBNames(accessedDbCount, accessedDbs);
-    }
-}

+ 0 - 21
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/user/AbstractUserVariable.java

@@ -1,21 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.variable.user;
-
-import org.dbsyncer.listener.mysql.binlog.UserVariable;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-public abstract class AbstractUserVariable implements UserVariable {
-    protected final int type;
-
-    public AbstractUserVariable(int type) {
-        this.type = type;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this).toString();
-    }
-
-    public int getType() {
-        return type;
-    }
-}

+ 0 - 25
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/user/UserVariableDecimal.java

@@ -1,25 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.variable.user;
-
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-public class UserVariableDecimal extends AbstractUserVariable {
-    public static final int TYPE = MySQLConstants.DECIMAL_RESULT;
-
-    private final byte[] value;
-
-    public UserVariableDecimal(byte[] value) {
-        super(TYPE);
-        this.value = value;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("value", value).toString();
-    }
-
-    public byte[] getValue() {
-        return this.value;
-    }
-}

+ 0 - 31
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/user/UserVariableInt.java

@@ -1,31 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.variable.user;
-
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-public class UserVariableInt extends AbstractUserVariable {
-    public static final int TYPE = MySQLConstants.INT_RESULT;
-
-    private final long value;
-    private final int obj;
-
-    public UserVariableInt(long value, int obj) {
-        super(TYPE);
-        this.value = value;
-        this.obj = obj;
-    }
-
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("value", value).toString();
-    }
-
-    public Long getValue() {
-        return this.value;
-    }
-
-    public int getObj() {
-        return obj;
-    }
-
-}

+ 0 - 25
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/user/UserVariableReal.java

@@ -1,25 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.variable.user;
-
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-public class UserVariableReal extends AbstractUserVariable {
-    public static final int TYPE = MySQLConstants.REAL_RESULT;
-
-    private final double value;
-
-    public UserVariableReal(double value) {
-        super(TYPE);
-        this.value = value;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("value", value).toString();
-    }
-
-    public Double getValue() {
-        return this.value;
-    }
-}

+ 0 - 25
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/user/UserVariableRow.java

@@ -1,25 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.variable.user;
-
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-public class UserVariableRow extends AbstractUserVariable {
-    public static final int TYPE = MySQLConstants.ROW_RESULT;
-
-    private final byte[] value;
-
-    public UserVariableRow(byte[] value) {
-        super(TYPE);
-        this.value = value;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("value", value).toString();
-    }
-
-    public byte[] getValue() {
-        return this.value;
-    }
-}

+ 0 - 32
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/binlog/impl/variable/user/UserVariableString.java

@@ -1,32 +0,0 @@
-package org.dbsyncer.listener.mysql.binlog.impl.variable.user;
-
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-public class UserVariableString extends AbstractUserVariable {
-    public static final int TYPE = MySQLConstants.STRING_RESULT;
-
-    private final byte[] value;
-    private final int collation;
-
-    public UserVariableString(byte[] value, int collation) {
-        super(TYPE);
-        this.value = value;
-        this.collation = collation;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("value", value)
-                .append("collation", collation).toString();
-    }
-
-    public byte[] getValue() {
-        return this.value;
-    }
-
-    public int getCollation() {
-        return collation;
-    }
-}

+ 0 - 8
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/Column.java

@@ -1,8 +0,0 @@
-package org.dbsyncer.listener.mysql.common.glossary;
-
-import java.io.Serializable;
-
-public interface Column extends Serializable {
-
-	Object getValue();
-}

+ 0 - 74
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/Metadata.java

@@ -1,74 +0,0 @@
-package org.dbsyncer.listener.mysql.common.glossary;
-
-import org.dbsyncer.listener.mysql.common.util.CodecUtils;
-import org.dbsyncer.listener.mysql.common.util.MySQLConstants;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-import org.dbsyncer.listener.mysql.io.util.XDeserializer;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.Arrays;
-
-public final class Metadata implements Serializable {
-    private static final long serialVersionUID = 4634414541769527837L;
-
-    private final byte[] type;
-    private final int[] metadata;
-
-    public Metadata(byte[] type, int[] metadata) {
-        this.type = type;
-        this.metadata = metadata;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("metadata", Arrays.toString(metadata)).toString();
-    }
-
-    public byte getType(int column) {
-        return this.type[column];
-    }
-
-    public int getMetadata(int column) {
-        return this.metadata[column];
-    }
-
-    public static final Metadata valueOf(byte[] type, byte[] data)
-            throws IOException {
-        final int[] metadata = new int[type.length];
-        final XDeserializer d = new XDeserializer(data);
-        for (int i = 0; i < type.length; i++) {
-            final int t = CodecUtils.toUnsigned(type[i]);
-            switch (t) {
-                case MySQLConstants.TYPE_FLOAT:
-                case MySQLConstants.TYPE_DOUBLE:
-                case MySQLConstants.TYPE_TINY_BLOB:
-                case MySQLConstants.TYPE_BLOB:
-                case MySQLConstants.TYPE_MEDIUM_BLOB:
-                case MySQLConstants.TYPE_LONG_BLOB:
-                case MySQLConstants.TYPE_GEOMETRY:
-                    metadata[i] = d.readInt(1);
-                    break;
-                case MySQLConstants.TYPE_BIT:
-                case MySQLConstants.TYPE_VARCHAR:
-                case MySQLConstants.TYPE_NEWDECIMAL:
-                    metadata[i] = d.readInt(2); // Little-endian
-                    break;
-                case MySQLConstants.TYPE_SET:
-                case MySQLConstants.TYPE_ENUM:
-                case MySQLConstants.TYPE_STRING:
-                    metadata[i] = CodecUtils.toInt(d.readBytes(2), 0, 2); // Big-endian
-                    break;
-                case MySQLConstants.TYPE_TIME2:
-                case MySQLConstants.TYPE_DATETIME2:
-                case MySQLConstants.TYPE_TIMESTAMP2:
-                    metadata[i] = d.readInt(1);
-                    break;
-                default:
-                    metadata[i] = 0;
-            }
-        }
-        return new Metadata(type, metadata);
-    }
-}

+ 0 - 56
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/Pair.java

@@ -1,56 +0,0 @@
-package org.dbsyncer.listener.mysql.common.glossary;
-
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-public final class Pair<T> {
-    private T before;
-    private T after;
-
-    public Pair() {
-    }
-
-    public Pair(T before, T after) {
-        this.before = before;
-        this.after = after;
-    }
-
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("before", before)
-                .append("after", after).toString();
-    }
-
-    public T getBefore() {
-        return before;
-    }
-
-    public void setBefore(T before) {
-        this.before = before;
-    }
-
-    public T getAfter() {
-        return after;
-    }
-
-    public void setAfter(T after) {
-        this.after = after;
-    }
-
-    public void swap() {
-        final T t = this.before;
-        this.before = this.after;
-        this.after = t;
-    }
-
-    public static void swap(Pair<?> p) {
-        doSwap(p); // Nothing but capture the <?>
-    }
-
-    private static <T> void doSwap(Pair<T> p) {
-        synchronized (p) {
-            final T t = p.before;
-            p.before = p.after;
-            p.after = t;
-        }
-    }
-}

+ 0 - 30
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/Row.java

@@ -1,30 +0,0 @@
-package org.dbsyncer.listener.mysql.common.glossary;
-
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-import java.util.List;
-
-public class Row {
-    private List<Column> columns;
-
-    public Row() {
-    }
-
-    public Row(List<Column> columns) {
-        this.columns = columns;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("columns", columns).toString();
-    }
-
-    public List<Column> getColumns() {
-        return columns;
-    }
-
-    public void setColumns(List<Column> columns) {
-        this.columns = columns;
-    }
-}

+ 0 - 159
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/UnsignedLong.java

@@ -1,159 +0,0 @@
-package org.dbsyncer.listener.mysql.common.glossary;
-
-import org.dbsyncer.listener.mysql.common.util.CodecUtils;
-
-import java.math.BigInteger;
-
-public abstract class UnsignedLong extends Number implements Comparable<UnsignedLong> {
-    private static final long serialVersionUID = -2263391850849681361L;
-
-    private static final UnsignedLong[] CACHE = new UnsignedLong[255];
-
-    static {
-        for (int i = 0; i < CACHE.length; i++) {
-            CACHE[i] = new UnsignedLong4(i);
-        }
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (!(obj instanceof UnsignedLong)) return false;
-        return this.doubleValue() == ((UnsignedLong) obj).doubleValue();
-    }
-
-    public int compareTo(UnsignedLong rhs) {
-        return (this.doubleValue() < rhs.doubleValue()) ? -1 : ((this.doubleValue() == rhs.doubleValue()) ? 0 : 1);
-    }
-
-    public static final UnsignedLong valueOf(long value) {
-        if (value < 0) { // Convert to positive value
-            return new UnsignedLongUnlimited(value);
-        } else if (value < CACHE.length) {
-            return CACHE[(int) value];
-        } else if (value < Integer.MAX_VALUE) {
-            return new UnsignedLong4((int) value);
-        } else { // value < Long.MAX_VALUE)
-            return new UnsignedLong8(value);
-        }
-    }
-
-    private static final class UnsignedLong4 extends UnsignedLong {
-        private static final long serialVersionUID = 6549354506227481646L;
-
-        private final int value;
-
-        private UnsignedLong4(int value) {
-            this.value = value;
-        }
-
-        @Override
-        public int intValue() {
-            return value;
-        }
-
-        @Override
-        public long longValue() {
-            return (long) value;
-        }
-
-        @Override
-        public float floatValue() {
-            return (float) value;
-        }
-
-        @Override
-        public double doubleValue() {
-            return (double) value;
-        }
-
-        @Override
-        public String toString() {
-            return String.valueOf(value);
-        }
-
-        @Override
-        public int hashCode() {
-            return this.value;
-        }
-    }
-
-    private static final class UnsignedLong8 extends UnsignedLong {
-        private static final long serialVersionUID = -314206857441911721L;
-
-        private final long value;
-
-        private UnsignedLong8(long value) {
-            this.value = value;
-        }
-
-        @Override
-        public int intValue() {
-            return (int) value;
-        }
-
-        @Override
-        public long longValue() {
-            return value;
-        }
-
-        @Override
-        public float floatValue() {
-            return (float) value;
-        }
-
-        @Override
-        public double doubleValue() {
-            return (double) value;
-        }
-
-        @Override
-        public String toString() {
-            return String.valueOf(value);
-        }
-
-        @Override
-        public int hashCode() {
-            return (int) (value ^ (value >>> 32));
-        }
-    }
-
-    private static final class UnsignedLongUnlimited extends UnsignedLong {
-        private static final long serialVersionUID = -5362638763306527191L;
-
-        private final BigInteger value;
-
-        private UnsignedLongUnlimited(long value) {
-            this.value = new BigInteger(1, CodecUtils.toByteArray(value));
-        }
-
-        @Override
-        public int intValue() {
-            return value.intValue();
-        }
-
-        @Override
-        public long longValue() {
-            return value.longValue();
-        }
-
-        @Override
-        public float floatValue() {
-            return value.floatValue();
-        }
-
-        @Override
-        public double doubleValue() {
-            return value.doubleValue();
-        }
-
-        @Override
-        public String toString() {
-            return value.toString();
-        }
-
-        @Override
-        public int hashCode() {
-            return value.hashCode();
-        }
-    }
-}

+ 0 - 16
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/AbstractDatetimeColumn.java

@@ -1,16 +0,0 @@
-package org.dbsyncer.listener.mysql.common.glossary.column;
-
-import org.dbsyncer.listener.mysql.common.glossary.Column;
-
-import java.sql.Timestamp;
-
-public abstract class AbstractDatetimeColumn implements Column {
-
-    private static final long serialVersionUID = 4281176377064341058L;
-
-    protected Timestamp timestampValue;
-
-    public Timestamp getTimestampValue() {
-        return this.timestampValue;
-    }
-}

+ 0 - 60
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/BitColumn.java

@@ -1,60 +0,0 @@
-package org.dbsyncer.listener.mysql.common.glossary.column;
-
-import org.dbsyncer.listener.mysql.common.glossary.Column;
-
-public final class BitColumn implements Column {
-    private static final long serialVersionUID = 4193150509864408687L;
-
-    private static final int BIT_MASKS[] = {1 << 0, 1 << 1, 1 << 2, 1 << 3, 1 << 4, 1 << 5, 1 << 6, 1 << 7};
-
-    private final int length;
-    private final byte[] value;
-
-    private BitColumn(int length, byte[] value) {
-        this.length = length;
-        this.value = value;
-    }
-
-    @Override
-    public String toString() {
-        final StringBuilder r = new StringBuilder(this.length);
-        for (int i = this.length - 1; i >= 0; i--) {
-            r.append(get(i) ? "1" : "0");
-        }
-        return r.toString();
-    }
-
-    public int getLength() {
-        return this.length;
-    }
-
-    public int getSetBitCount() {
-        int count = 0;
-        for (int i = 0; i < this.length; i++) {
-            if (get(i))
-                count++;
-        }
-        return count;
-    }
-
-    public byte[] getValue() {
-        return this.value;
-    }
-
-    public boolean get(int index) {
-        final int byteIndex = (index >> 3);
-        final int bitIndex = (index - (byteIndex << 3));
-        return (this.value[byteIndex] & BIT_MASKS[bitIndex]) != 0;
-    }
-
-    public void set(int index) {
-        final int byteIndex = (index >> 3);
-        final int bitIndex = (index - (byteIndex << 3));
-        this.value[byteIndex] |= BIT_MASKS[bitIndex];
-    }
-
-    public static final BitColumn valueOf(int length, byte[] value) {
-        if (length < 0 || length > (value.length << 3)) throw new IllegalArgumentException("invalid length: " + length);
-        return new BitColumn(length, value);
-    }
-}

+ 0 - 28
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/BlobColumn.java

@@ -1,28 +0,0 @@
-package org.dbsyncer.listener.mysql.common.glossary.column;
-
-import org.dbsyncer.listener.mysql.common.glossary.Column;
-import org.dbsyncer.listener.mysql.common.util.ToStringBuilder;
-
-public class BlobColumn implements Column {
-    private static final long serialVersionUID = 756688909230132013L;
-
-    private final byte[] value;
-
-    private BlobColumn(byte[] value) {
-        this.value = value;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this)
-                .append("value", value).toString();
-    }
-
-    public byte[] getValue() {
-        return value;
-    }
-
-    public static final BlobColumn valueOf(byte[] value) {
-        return new BlobColumn(value);
-    }
-}

+ 0 - 26
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/DateColumn.java

@@ -1,26 +0,0 @@
-package org.dbsyncer.listener.mysql.common.glossary.column;
-
-import org.dbsyncer.listener.mysql.common.glossary.Column;
-
-public final class DateColumn implements Column {
-    private static final long serialVersionUID = 959710929844516680L;
-
-    private final java.sql.Date value;
-
-    private DateColumn(java.sql.Date value) {
-        this.value = value;
-    }
-
-    @Override
-    public String toString() {
-        return String.valueOf(this.value);
-    }
-
-    public java.sql.Date getValue() {
-        return this.value;
-    }
-
-    public static final DateColumn valueOf(java.sql.Date value) {
-        return new DateColumn(value);
-    }
-}

+ 0 - 36
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/Datetime2Column.java

@@ -1,36 +0,0 @@
-package org.dbsyncer.listener.mysql.common.glossary.column;
-
-import java.sql.Timestamp;
-
-public final class Datetime2Column extends AbstractDatetimeColumn {
-	private static final long serialVersionUID = 6444968242222031354L;
-
-	private final java.util.Date value;
-
-	private Datetime2Column(java.util.Date value) {
-		this.value = value;
-		this.timestampValue = new Timestamp(value.getTime());
-	}
-
-	private Datetime2Column(Timestamp value) {
-		this.timestampValue = value;
-		this.value = (java.util.Date) value;
-	}
-
-	@Override
-	public String toString() {
-		return String.valueOf(this.value);
-	}
-
-	public java.util.Date getValue() {
-		return this.value;
-	}
-
-	public static final Datetime2Column valueOf(java.util.Date value) {
-		return new Datetime2Column(value);
-	}
-
-	public static final Datetime2Column valueOf(Timestamp value) {
-		return new Datetime2Column(value);
-	}
-}

+ 0 - 41
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/DatetimeColumn.java

@@ -1,41 +0,0 @@
-package org.dbsyncer.listener.mysql.common.glossary.column;
-
-import org.dbsyncer.listener.mysql.common.glossary.Column;
-import org.dbsyncer.listener.mysql.common.util.MySQLUtils;
-
-public final class DatetimeColumn implements Column {
-    private static final long serialVersionUID = 6444968242222031354L;
-
-    private final java.util.Date value;
-    private long longValue;
-
-    private DatetimeColumn(java.util.Date value) {
-        this.value = value;
-    }
-
-    private DatetimeColumn(long value) {
-        this.longValue = value;
-        this.value = MySQLUtils.toDatetime(value);
-    }
-
-    @Override
-    public String toString() {
-        return String.valueOf(this.value);
-    }
-
-    public java.util.Date getValue() {
-        return this.value;
-    }
-
-    public long getLongValue() {
-        return this.longValue;
-    }
-
-    public static final DatetimeColumn valueOf(java.util.Date value) {
-        return new DatetimeColumn(value);
-    }
-
-    public static final DatetimeColumn valueOf(long value) {
-        return new DatetimeColumn(value);
-    }
-}

+ 0 - 42
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/DecimalColumn.java

@@ -1,42 +0,0 @@
-package org.dbsyncer.listener.mysql.common.glossary.column;
-
-import org.dbsyncer.listener.mysql.common.glossary.Column;
-
-import java.math.BigDecimal;
-
-public final class DecimalColumn implements Column {
-    private static final long serialVersionUID = -3798378473095594835L;
-
-    private final BigDecimal value;
-    private final int precision;
-    private final int scale;
-
-    private DecimalColumn(BigDecimal value, int precision, int scale) {
-        this.value = value;
-        this.scale = scale;
-        this.precision = precision;
-    }
-
-    @Override
-    public String toString() {
-        return String.valueOf(this.value);
-    }
-
-    public BigDecimal getValue() {
-        return this.value;
-    }
-
-    public int getPrecision() {
-        return precision;
-    }
-
-    public int getScale() {
-        return scale;
-    }
-
-    public static final DecimalColumn valueOf(BigDecimal value, int precision, int scale) {
-        if (precision < scale)
-            throw new IllegalArgumentException("invalid precision: " + precision + ", scale: " + scale);
-        return new DecimalColumn(value, precision, scale);
-    }
-}

+ 0 - 26
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/DoubleColumn.java

@@ -1,26 +0,0 @@
-package org.dbsyncer.listener.mysql.common.glossary.column;
-
-import org.dbsyncer.listener.mysql.common.glossary.Column;
-
-public final class DoubleColumn implements Column {
-    private static final long serialVersionUID = 7565759864274700531L;
-
-    private final double value;
-
-    private DoubleColumn(double value) {
-        this.value = value;
-    }
-
-    @Override
-    public String toString() {
-        return String.valueOf(this.value);
-    }
-
-    public Double getValue() {
-        return this.value;
-    }
-
-    public static final DoubleColumn valueOf(double value) {
-        return new DoubleColumn(value);
-    }
-}

+ 0 - 26
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/EnumColumn.java

@@ -1,26 +0,0 @@
-package org.dbsyncer.listener.mysql.common.glossary.column;
-
-import org.dbsyncer.listener.mysql.common.glossary.Column;
-
-public final class EnumColumn implements Column {
-    private static final long serialVersionUID = -6017298545673303080L;
-
-    private final int value;
-
-    private EnumColumn(int value) {
-        this.value = value;
-    }
-
-    @Override
-    public String toString() {
-        return String.valueOf(this.value);
-    }
-
-    public Integer getValue() {
-        return this.value;
-    }
-
-    public static final EnumColumn valueOf(int value) {
-        return new EnumColumn(value);
-    }
-}

+ 0 - 26
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/FloatColumn.java

@@ -1,26 +0,0 @@
-package org.dbsyncer.listener.mysql.common.glossary.column;
-
-import org.dbsyncer.listener.mysql.common.glossary.Column;
-
-public final class FloatColumn implements Column {
-    private static final long serialVersionUID = -890414733626452618L;
-
-    private final float value;
-
-    private FloatColumn(float value) {
-        this.value = value;
-    }
-
-    @Override
-    public String toString() {
-        return String.valueOf(this.value);
-    }
-
-    public Float getValue() {
-        return this.value;
-    }
-
-    public static final FloatColumn valueOf(float value) {
-        return new FloatColumn(value);
-    }
-}

+ 0 - 22
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/GeometryColumn.java

@@ -1,22 +0,0 @@
-package org.dbsyncer.listener.mysql.common.glossary.column;/*
-package org.dbsyncer.listener.mysql.common.glossary.column;
-
-import com.vividsolutions.jts.geom.Geometry;
-import org.dbsyncer.listener.mysql.common.glossary.Column;
-
-public class GeometryColumn implements Column {
-    private static final long serialVersionUID = -7414553076727661079L;
-    private Geometry geometry;
-
-    public GeometryColumn(Geometry g) {
-        this.geometry = g;
-    }
-
-    public Geometry getValue() {
-        return this.geometry;
-    }
-
-    public static GeometryColumn valueOf(Geometry g) {
-        return new GeometryColumn(g);
-    }
-}*/

+ 0 - 39
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/Int24Column.java

@@ -1,39 +0,0 @@
-package org.dbsyncer.listener.mysql.common.glossary.column;
-
-import org.dbsyncer.listener.mysql.common.glossary.Column;
-
-public final class Int24Column implements Column {
-    private static final long serialVersionUID = 6456161237369680803L;
-
-    public static final int MIN_VALUE = -8388608;
-    public static final int MAX_VALUE = 8388607;
-
-    private static final Int24Column[] CACHE = new Int24Column[255];
-
-    static {
-        for (int i = 0; i < CACHE.length; i++) {
-            CACHE[i] = new Int24Column(i + Byte.MIN_VALUE);
-        }
-    }
-
-    private final int value;
-
-    private Int24Column(int value) {
-        this.value = value;
-    }
-
-    @Override
-    public String toString() {
-        return String.valueOf(this.value);
-    }
-
-    public Integer getValue() {
-        return this.value;
-    }
-
-    public static final Int24Column valueOf(int value) {
-        if (value < MIN_VALUE || value > MAX_VALUE) throw new IllegalArgumentException("invalid value: " + value);
-        final int index = value - Byte.MIN_VALUE;
-        return (index >= 0 && index < CACHE.length) ? CACHE[index] : new Int24Column(value);
-    }
-}

+ 0 - 39
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/LongColumn.java

@@ -1,39 +0,0 @@
-package org.dbsyncer.listener.mysql.common.glossary.column;
-
-import org.dbsyncer.listener.mysql.common.glossary.Column;
-
-public final class LongColumn implements Column {
-    private static final long serialVersionUID = -4109941053716659749L;
-
-    public static final int MIN_VALUE = Integer.MIN_VALUE;
-    public static final int MAX_VALUE = Integer.MAX_VALUE;
-
-    private static final LongColumn[] CACHE = new LongColumn[255];
-
-    static {
-        for (int i = 0; i < CACHE.length; i++) {
-            CACHE[i] = new LongColumn(i + Byte.MIN_VALUE);
-        }
-    }
-
-    private final int value;
-
-    private LongColumn(int value) {
-        this.value = value;
-    }
-
-    @Override
-    public String toString() {
-        return String.valueOf(this.value);
-    }
-
-    public Integer getValue() {
-        return this.value;
-    }
-
-    public static final LongColumn valueOf(int value) {
-        if (value < MIN_VALUE || value > MAX_VALUE) throw new IllegalArgumentException("invalid value: " + value);
-        final int index = value - Byte.MIN_VALUE;
-        return (index >= 0 && index < CACHE.length) ? CACHE[index] : new LongColumn(value);
-    }
-}

+ 0 - 29
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/LongLongColumn.java

@@ -1,29 +0,0 @@
-package org.dbsyncer.listener.mysql.common.glossary.column;
-
-import org.dbsyncer.listener.mysql.common.glossary.Column;
-
-public final class LongLongColumn implements Column {
-    private static final long serialVersionUID = 4159913884779393654L;
-
-    public static final long MIN_VALUE = Long.MIN_VALUE;
-    public static final long MAX_VALUE = Long.MAX_VALUE;
-
-    private final long value;
-
-    private LongLongColumn(long value) {
-        this.value = value;
-    }
-
-    @Override
-    public String toString() {
-        return String.valueOf(this.value);
-    }
-
-    public Long getValue() {
-        return this.value;
-    }
-
-    public static final LongLongColumn valueOf(long value) {
-        return new LongLongColumn(value);
-    }
-}

+ 0 - 39
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/NullColumn.java

@@ -1,39 +0,0 @@
-package org.dbsyncer.listener.mysql.common.glossary.column;
-
-import org.dbsyncer.listener.mysql.common.glossary.Column;
-
-public final class NullColumn implements Column {
-    private static final long serialVersionUID = 3300119160243172731L;
-
-    private static final NullColumn[] CACHE = new NullColumn[256];
-
-    static {
-        for (int i = 0; i < CACHE.length; i++) {
-            CACHE[i] = new NullColumn(i);
-        }
-    }
-
-    private final int type;
-
-    private NullColumn(int type) {
-        this.type = type;
-    }
-
-    @Override
-    public String toString() {
-        return null;
-    }
-
-    public int getType() {
-        return type;
-    }
-
-    public Object getValue() {
-        return null;
-    }
-
-    public static final NullColumn valueOf(int type) {
-        if (type < 0 || type >= CACHE.length) throw new IllegalArgumentException("invalid type: " + type);
-        return CACHE[type];
-    }
-}

+ 0 - 26
dbsyncer-listener/src/main/java/org/dbsyncer/listener/mysql/common/glossary/column/SetColumn.java

@@ -1,26 +0,0 @@
-package org.dbsyncer.listener.mysql.common.glossary.column;
-
-import org.dbsyncer.listener.mysql.common.glossary.Column;
-
-public final class SetColumn implements Column {
-    private static final long serialVersionUID = -5274295462701023264L;
-
-    private final long value;
-
-    private SetColumn(long value) {
-        this.value = value;
-    }
-
-    @Override
-    public String toString() {
-        return String.valueOf(this.value);
-    }
-
-    public Long getValue() {
-        return this.value;
-    }
-
-    public static final SetColumn valueOf(long value) {
-        return new SetColumn(value);
-    }
-}

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio