diff --git a/src/com/wentch/redkale/net/AsyncConnection.java b/src/com/wentch/redkale/net/AsyncConnection.java index 84e99053a..9ecff75b5 100644 --- a/src/com/wentch/redkale/net/AsyncConnection.java +++ b/src/com/wentch/redkale/net/AsyncConnection.java @@ -9,6 +9,7 @@ import java.io.*; import java.net.*; import java.nio.*; import java.nio.channels.*; +import java.util.*; import java.util.concurrent.*; /** @@ -17,6 +18,8 @@ import java.util.concurrent.*; */ public abstract class AsyncConnection implements AsynchronousByteChannel, AutoCloseable { + protected Map attributes; + public abstract boolean isTCP(); public abstract SocketAddress getRemoteAddress(); @@ -37,6 +40,29 @@ public abstract class AsyncConnection implements AsynchronousByteChannel, AutoCl public abstract void dispose(); //同close, 只是去掉throws IOException + public void setAttribute(String name, Object value) { + if (attributes == null) attributes = new HashMap<>(); + attributes.put(name, value); + } + + @SuppressWarnings("unchecked") + public final T getAttribute(String name) { + return (T) (attributes == null ? null : attributes.get(name)); + } + + public final void removeAttribute(String name) { + if (attributes != null) attributes.remove(name); + } + + public final Map getAttributes() { + return attributes; + } + + public final void clearAttribute() { + if (attributes != null) attributes.clear(); + } + + //------------------------------------------------------------------------------------------------------------------------------ public static AsyncConnection create(final String protocol, final SocketAddress address) throws IOException { return create(protocol, address, 0, 0); }