From f777482a9768388698452851fe2f347cbef69aec Mon Sep 17 00:00:00 2001 From: Trustin Lee Date: Wed, 18 Mar 2009 06:53:04 +0000 Subject: [PATCH] Fixed a problem where DefaultChannelGroup.write() doesn't recognize ChannelBuffers --- .../channel/group/DefaultChannelGroup.java | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/jboss/netty/channel/group/DefaultChannelGroup.java b/src/main/java/org/jboss/netty/channel/group/DefaultChannelGroup.java index 01f520d4a2..2e099ca24e 100644 --- a/src/main/java/org/jboss/netty/channel/group/DefaultChannelGroup.java +++ b/src/main/java/org/jboss/netty/channel/group/DefaultChannelGroup.java @@ -32,6 +32,7 @@ import java.util.Map; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.atomic.AtomicInteger; +import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelFuture; import org.jboss.netty.channel.ChannelFutureListener; @@ -246,8 +247,15 @@ public class DefaultChannelGroup extends AbstractSet implements Channel public ChannelGroupFuture write(Object message) { Map futures = new HashMap(size()); - for (Channel c: this) { - futures.put(c.getId(), c.write(message)); + if (message instanceof ChannelBuffer) { + ChannelBuffer buf = (ChannelBuffer) message; + for (Channel c: this) { + futures.put(c.getId(), c.write(buf.duplicate())); + } + } else { + for (Channel c: this) { + futures.put(c.getId(), c.write(message)); + } } return new DefaultChannelGroupFuture(this, futures); } @@ -255,8 +263,15 @@ public class DefaultChannelGroup extends AbstractSet implements Channel public ChannelGroupFuture write(Object message, SocketAddress remoteAddress) { Map futures = new HashMap(size()); - for (Channel c: this) { - futures.put(c.getId(), c.write(message, remoteAddress)); + if (message instanceof ChannelBuffer) { + ChannelBuffer buf = (ChannelBuffer) message; + for (Channel c: this) { + futures.put(c.getId(), c.write(buf.duplicate(), remoteAddress)); + } + } else { + for (Channel c: this) { + futures.put(c.getId(), c.write(message, remoteAddress)); + } } return new DefaultChannelGroupFuture(this, futures); }