diff --git a/src/main/java/org/jboss/netty/channel/AbstractChannel.java b/src/main/java/org/jboss/netty/channel/AbstractChannel.java index 862884df3c..f8ffaec603 100644 --- a/src/main/java/org/jboss/netty/channel/AbstractChannel.java +++ b/src/main/java/org/jboss/netty/channel/AbstractChannel.java @@ -57,7 +57,8 @@ public abstract class AbstractChannel implements Channel { /** Cache for the string representation of this channel */ private boolean strValConnected; private String strVal; - + private volatile Object attachment; + /** * Creates a new instance. * @@ -272,6 +273,16 @@ public abstract class AbstractChannel implements Channel { return Channels.write(this, message, remoteAddress); } + @Override + public Object getAttachment() { + return attachment; + } + + @Override + public void setAttachment(Object attachment) { + this.attachment = attachment; + } + /** * Returns the {@link String} representation of this channel. The returned * string contains the {@linkplain #getId() ID}, {@linkplain #getLocalAddress() local address}, diff --git a/src/main/java/org/jboss/netty/channel/Channel.java b/src/main/java/org/jboss/netty/channel/Channel.java index c0e6e51597..f7ed787d0a 100644 --- a/src/main/java/org/jboss/netty/channel/Channel.java +++ b/src/main/java/org/jboss/netty/channel/Channel.java @@ -362,4 +362,19 @@ public interface Channel extends Comparable { * {@code interestOps} change request succeeds or fails */ ChannelFuture setReadable(boolean readable); + + /** + * Retrieves an object which is {@link #setAttachment(Object) attached} to + * this {@link Channel}. + * + * @return {@code null} if no object was attached or + * {@code null} was attached + */ + Object getAttachment(); + + /** + * Attaches an object to this {@link Channel} to store a stateful information + * + */ + void setAttachment(Object attachment); } diff --git a/src/main/java/org/jboss/netty/channel/ChannelLocal.java b/src/main/java/org/jboss/netty/channel/ChannelLocal.java index 928d4fcdf3..91062feada 100644 --- a/src/main/java/org/jboss/netty/channel/ChannelLocal.java +++ b/src/main/java/org/jboss/netty/channel/ChannelLocal.java @@ -32,8 +32,12 @@ import org.jboss.netty.util.internal.ConcurrentIdentityWeakKeyHashMap; * @author The Netty Project * @author Trustin Lee * + * @deprecated Use {@link Channel#setAttachment(Object)} and {@link Channel#getAttachment()} + * * @apiviz.stereotype utility + * */ +@Deprecated public class ChannelLocal { private final ConcurrentMap map =