|
@@ -2,8 +2,12 @@ package com.alibaba.otter.canal.server.netty;
|
|
|
|
|
|
import java.nio.ByteBuffer;
|
|
|
import java.nio.ByteOrder;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
|
|
|
+import org.jboss.netty.buffer.ChannelBuffer;
|
|
|
import org.jboss.netty.buffer.ChannelBuffers;
|
|
|
+import org.jboss.netty.buffer.CompositeChannelBuffer;
|
|
|
import org.jboss.netty.channel.Channel;
|
|
|
import org.jboss.netty.channel.ChannelFutureListener;
|
|
|
import org.jboss.netty.channel.Channels;
|
|
@@ -22,6 +26,20 @@ public class NettyUtils {
|
|
|
public static int HEADER_LENGTH = 4;
|
|
|
public static Timer hashedWheelTimer = new HashedWheelTimer();
|
|
|
|
|
|
+ public static void write(Channel channel, ByteBuffer body, ChannelFutureListener channelFutureListner) {
|
|
|
+ byte[] header = ByteBuffer.allocate(HEADER_LENGTH).order(ByteOrder.BIG_ENDIAN).putInt(body.limit()).array();
|
|
|
+ List<ChannelBuffer> components = new ArrayList<ChannelBuffer>(2);
|
|
|
+ components.add(ChannelBuffers.wrappedBuffer(ByteOrder.BIG_ENDIAN, header));
|
|
|
+ components.add(ChannelBuffers.wrappedBuffer(body));
|
|
|
+
|
|
|
+ if (channelFutureListner == null) {
|
|
|
+ Channels.write(channel, new CompositeChannelBuffer(ByteOrder.BIG_ENDIAN, components));
|
|
|
+ } else {
|
|
|
+ Channels.write(channel, new CompositeChannelBuffer(ByteOrder.BIG_ENDIAN, components))
|
|
|
+ .addListener(channelFutureListner);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public static void write(Channel channel, byte[] body, ChannelFutureListener channelFutureListner) {
|
|
|
byte[] header = ByteBuffer.allocate(HEADER_LENGTH).order(ByteOrder.BIG_ENDIAN).putInt(body.length).array();
|
|
|
if (channelFutureListner == null) {
|