Remove unnecessary parameters and fields / Clean-up

This commit is contained in:
Trustin Lee 2012-06-04 11:56:00 -07:00
parent 6b637ab22f
commit b322e98712
2 changed files with 60 additions and 67 deletions

View File

@ -19,8 +19,6 @@ final class DefaultChannelHandlerContext extends DefaultAttributeMap implements
EventExecutor executor; // not thread-safe but OK because it never changes once set.
private final String name;
private final ChannelHandler handler;
private final boolean canHandleInbound;
private final boolean canHandleOutbound;
final ChannelBufferHolder<Object> in;
final ChannelBufferHolder<Object> out;
@ -41,7 +39,7 @@ final class DefaultChannelHandlerContext extends DefaultAttributeMap implements
public void run() {
DefaultChannelHandlerContext ctx = DefaultChannelHandlerContext.this;
try {
((ChannelInboundHandler<Object>) ctx.handler()).channelRegistered(ctx);
((ChannelInboundHandler<Object>) ctx.handler).channelRegistered(ctx);
} catch (Throwable t) {
pipeline.notifyHandlerException(t);
}
@ -53,7 +51,7 @@ final class DefaultChannelHandlerContext extends DefaultAttributeMap implements
public void run() {
DefaultChannelHandlerContext ctx = DefaultChannelHandlerContext.this;
try {
((ChannelInboundHandler<Object>) ctx.handler()).channelUnregistered(ctx);
((ChannelInboundHandler<Object>) ctx.handler).channelUnregistered(ctx);
} catch (Throwable t) {
pipeline.notifyHandlerException(t);
}
@ -65,7 +63,7 @@ final class DefaultChannelHandlerContext extends DefaultAttributeMap implements
public void run() {
DefaultChannelHandlerContext ctx = DefaultChannelHandlerContext.this;
try {
((ChannelInboundHandler<Object>) ctx.handler()).channelActive(ctx);
((ChannelInboundHandler<Object>) ctx.handler).channelActive(ctx);
} catch (Throwable t) {
pipeline.notifyHandlerException(t);
}
@ -77,7 +75,7 @@ final class DefaultChannelHandlerContext extends DefaultAttributeMap implements
public void run() {
DefaultChannelHandlerContext ctx = DefaultChannelHandlerContext.this;
try {
((ChannelInboundHandler<Object>) ctx.handler()).channelInactive(ctx);
((ChannelInboundHandler<Object>) ctx.handler).channelInactive(ctx);
} catch (Throwable t) {
pipeline.notifyHandlerException(t);
}
@ -90,13 +88,15 @@ final class DefaultChannelHandlerContext extends DefaultAttributeMap implements
DefaultChannelHandlerContext ctx = DefaultChannelHandlerContext.this;
flushBridge();
try {
((ChannelInboundHandler<Object>) ctx.handler()).inboundBufferUpdated(ctx);
((ChannelInboundHandler<Object>) ctx.handler).inboundBufferUpdated(ctx);
} catch (Throwable t) {
pipeline.notifyHandlerException(t);
} finally {
ChannelBufferHolder<Object> inbound = ctx.inbound();
if (!inbound.isBypass() && inbound.isEmpty() && inbound.hasByteBuffer()) {
inbound.byteBuffer().discardReadBytes();
if (inByteBridge != null) {
ChannelBuffer buf = ctx.in.byteBuffer();
if (!buf.readable()) {
buf.discardReadBytes();
}
}
}
}
@ -125,9 +125,9 @@ final class DefaultChannelHandlerContext extends DefaultAttributeMap implements
if (handler == null) {
throw new NullPointerException("handler");
}
canHandleInbound = handler instanceof ChannelInboundHandler;
canHandleOutbound = handler instanceof ChannelOutboundHandler;
boolean canHandleInbound = handler instanceof ChannelInboundHandler;
boolean canHandleOutbound = handler instanceof ChannelOutboundHandler;
if (!canHandleInbound && !canHandleOutbound) {
throw new IllegalArgumentException(
"handler must be either " +
@ -293,12 +293,12 @@ final class DefaultChannelHandlerContext extends DefaultAttributeMap implements
@Override
public boolean canHandleInbound() {
return canHandleInbound;
return in != null;
}
@Override
public boolean canHandleOutbound() {
return canHandleOutbound;
return out != null;
}
@Override

View File

@ -49,8 +49,8 @@ public class DefaultChannelPipeline implements ChannelPipeline {
private final Map<String, DefaultChannelHandlerContext> name2ctx =
new HashMap<String, DefaultChannelHandlerContext>(4);
private boolean firedChannelActive;
private boolean fireInboundBufferUpdatedOnActivation;
private boolean fireInboundBufferUpdatedOnActivation;
final Map<EventExecutor, EventExecutor> childExecutors =
new IdentityHashMap<EventExecutor, EventExecutor>();
@ -87,27 +87,25 @@ public class DefaultChannelPipeline implements ChannelPipeline {
new DefaultChannelHandlerContext(this, executor, head, nextCtx, name, handler);
if (!newCtx.channel().isRegistered() || newCtx.executor().inEventLoop()) {
addFirst0(name, handler, nextCtx, newCtx);
addFirst0(name, nextCtx, newCtx);
} else {
try {
newCtx.executor().submit(new Runnable() {
@Override
public void run() {
checkDuplicateName(name);
addFirst0(name, handler, nextCtx, newCtx);
addFirst0(name, nextCtx, newCtx);
}
}).get();
} catch (Throwable t) {
throw new ChannelException(t);
}
}
return this;
}
private void addFirst0(final String name, ChannelHandler handler, DefaultChannelHandlerContext nextCtx, DefaultChannelHandlerContext newCtx) {
private void addFirst0(final String name, DefaultChannelHandlerContext nextCtx, DefaultChannelHandlerContext newCtx) {
callBeforeAdd(newCtx);
if (nextCtx != null) {
@ -118,7 +116,7 @@ public class DefaultChannelPipeline implements ChannelPipeline {
callAfterAdd(newCtx);
}
@Override
public ChannelPipeline addLast(String name, ChannelHandler handler) {
return addLast(null, name, handler);
@ -131,36 +129,34 @@ public class DefaultChannelPipeline implements ChannelPipeline {
final DefaultChannelHandlerContext newTail =
new DefaultChannelHandlerContext(this, executor, oldTail, null, name, handler);
if (!newTail.channel().isRegistered() || newTail.executor().inEventLoop()) {
addLast0(name, handler, oldTail, newTail);
addLast0(name, oldTail, newTail);
} else {
try {
newTail.executor().submit(new Runnable() {
@Override
public void run() {
checkDuplicateName(name);
addLast0(name, handler, oldTail, newTail);
addLast0(name, oldTail, newTail);
}
}).get();
} catch (Throwable t) {
throw new ChannelException(t);
}
}
return this;
}
private void addLast0(final String name, ChannelHandler handler, DefaultChannelHandlerContext oldTail, DefaultChannelHandlerContext newTail) {
private void addLast0(final String name, DefaultChannelHandlerContext oldTail, DefaultChannelHandlerContext newTail) {
callBeforeAdd(newTail);
oldTail.next = newTail;
tail = newTail;
name2ctx.put(name, newTail);
callAfterAdd(newTail);
callAfterAdd(newTail);
}
@Override
@ -176,16 +172,14 @@ public class DefaultChannelPipeline implements ChannelPipeline {
new DefaultChannelHandlerContext(this, executor, ctx.prev, ctx, name, handler);
if (!newCtx.channel().isRegistered() || newCtx.executor().inEventLoop()) {
addBefore0(name, handler, ctx, newCtx);
addBefore0(name, ctx, newCtx);
} else {
try {
newCtx.executor().submit(new Runnable() {
@Override
public void run() {
checkDuplicateName(name);
addBefore0(name, handler, ctx, newCtx);
addBefore0(name, ctx, newCtx);
}
}).get();
} catch (Throwable t) {
@ -195,15 +189,16 @@ public class DefaultChannelPipeline implements ChannelPipeline {
return this;
}
private void addBefore0(final String name, ChannelHandler handler, DefaultChannelHandlerContext ctx, DefaultChannelHandlerContext newCtx) {
private void addBefore0(final String name, DefaultChannelHandlerContext ctx, DefaultChannelHandlerContext newCtx) {
callBeforeAdd(newCtx);
ctx.prev.next = newCtx;
ctx.prev = newCtx;
name2ctx.put(name, newCtx);
callAfterAdd(newCtx);
callAfterAdd(newCtx);
}
@Override
public ChannelPipeline addAfter(String baseName, String name, ChannelHandler handler) {
return addAfter(null, baseName, name, handler);
@ -218,31 +213,29 @@ public class DefaultChannelPipeline implements ChannelPipeline {
checkDuplicateName(name);
final DefaultChannelHandlerContext newCtx =
new DefaultChannelHandlerContext(this, executor, ctx, ctx.next, name, handler);
if (!newCtx.channel().isRegistered() || newCtx.executor().inEventLoop()) {
addAfter0(name, handler, ctx, newCtx);
addAfter0(name, ctx, newCtx);
} else {
try {
newCtx.executor().submit(new Runnable() {
@Override
public void run() {
checkDuplicateName(name);
addAfter0(name, handler, ctx, newCtx);
addAfter0(name, ctx, newCtx);
}
}).get();
} catch (Throwable t) {
throw new ChannelException(t);
}
}
}
return this;
}
private void addAfter0(final String name, ChannelHandler handler, DefaultChannelHandlerContext ctx, DefaultChannelHandlerContext newCtx) {
private void addAfter0(final String name, DefaultChannelHandlerContext ctx, DefaultChannelHandlerContext newCtx) {
checkDuplicateName(name);
callBeforeAdd(newCtx);
@ -251,9 +244,9 @@ public class DefaultChannelPipeline implements ChannelPipeline {
ctx.next = newCtx;
name2ctx.put(name, newCtx);
callAfterAdd(newCtx);
callAfterAdd(newCtx);
}
@Override
public ChannelPipeline addFirst(ChannelHandler... handlers) {
return addFirst(null, handlers);
@ -342,7 +335,7 @@ public class DefaultChannelPipeline implements ChannelPipeline {
} else {
try {
ctx.executor().submit(new Runnable() {
@Override
public void run() {
remove0(ctx);
@ -353,11 +346,11 @@ public class DefaultChannelPipeline implements ChannelPipeline {
throw new ChannelException(t);
}
}
}
return ctx;
}
private void remove0(DefaultChannelHandlerContext ctx) {
callBeforeRemove(ctx);
@ -390,7 +383,7 @@ public class DefaultChannelPipeline implements ChannelPipeline {
} else {
try {
oldTail.executor().submit(new Runnable() {
@Override
public void run() {
removeLast0(oldTail);
@ -400,12 +393,12 @@ public class DefaultChannelPipeline implements ChannelPipeline {
} catch (Throwable t) {
throw new ChannelException(t);
}
}
return oldTail.handler();
}
private void removeLast0(DefaultChannelHandlerContext oldTail) {
callBeforeRemove(oldTail);
@ -451,14 +444,13 @@ public class DefaultChannelPipeline implements ChannelPipeline {
new DefaultChannelHandlerContext(this, ctx.executor, prev, next, newName, newHandler);
if (!newCtx.channel().isRegistered() || newCtx.executor().inEventLoop()) {
replace0(ctx, newName, newHandler, newCtx);
replace0(ctx, newName, newCtx);
} else {
try {
newCtx.executor().submit(new Runnable() {
@Override
public void run() {
replace0(ctx, newName, newHandler, newCtx);
replace0(ctx, newName, newCtx);
}
}).get();
@ -466,18 +458,17 @@ public class DefaultChannelPipeline implements ChannelPipeline {
throw new ChannelException(t);
}
}
}
return ctx.handler();
}
private void replace0(DefaultChannelHandlerContext ctx, String newName, ChannelHandler newHandler, DefaultChannelHandlerContext newCtx) {
private void replace0(DefaultChannelHandlerContext ctx, String newName, DefaultChannelHandlerContext newCtx) {
boolean sameName = ctx.name().equals(newName);
DefaultChannelHandlerContext prev = ctx.prev;
DefaultChannelHandlerContext next = ctx.next;
callBeforeRemove(ctx);
callBeforeAdd(newCtx);
@ -520,6 +511,7 @@ public class DefaultChannelPipeline implements ChannelPipeline {
throw addException;
}
}
private static void callBeforeAdd(ChannelHandlerContext ctx) {
ChannelHandler handler = ctx.handler();
if (handler instanceof AbstractChannelHandler) {
@ -809,9 +801,8 @@ public class DefaultChannelPipeline implements ChannelPipeline {
return bridge.byteBuf;
}
}
ChannelBufferHolder<Object> in = ctx.in;
if (in != null && !in.isBypass() && in.hasByteBuffer()) {
return in.byteBuffer();
if (ctx.inByteBridge != null) {
return ctx.in.byteBuffer();
}
ctx = ctx.next;
}
@ -1298,9 +1289,11 @@ public class DefaultChannelPipeline implements ChannelPipeline {
} catch (Throwable t) {
notifyHandlerException(t);
} finally {
ChannelBufferHolder<Object> outbound = ctx.outbound();
if (!outbound.isBypass() && outbound.isEmpty() && outbound.hasByteBuffer()) {
outbound.byteBuffer().discardReadBytes();
if (ctx.outByteBridge != null) {
ChannelBuffer buf = ctx.out.byteBuffer();
if (!buf.readable()) {
buf.discardReadBytes();
}
}
}
}