Move multiplicity check to the early stage
.. no need to do it late
This commit is contained in:
parent
6282b31bc0
commit
99b999760a
@ -118,12 +118,11 @@ final class DefaultChannelPipeline implements ChannelPipeline {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void addFirst0(String name, DefaultChannelHandlerContext newCtx) {
|
private void addFirst0(String name, DefaultChannelHandlerContext newCtx) {
|
||||||
|
checkMultiplicity(newCtx);
|
||||||
|
|
||||||
DefaultChannelHandlerContext nextCtx = head.next;
|
DefaultChannelHandlerContext nextCtx = head.next;
|
||||||
newCtx.prev = head;
|
newCtx.prev = head;
|
||||||
newCtx.next = nextCtx;
|
newCtx.next = nextCtx;
|
||||||
|
|
||||||
checkMultiplicity(newCtx);
|
|
||||||
|
|
||||||
head.next = newCtx;
|
head.next = newCtx;
|
||||||
nextCtx.prev = newCtx;
|
nextCtx.prev = newCtx;
|
||||||
|
|
||||||
@ -149,14 +148,12 @@ final class DefaultChannelPipeline implements ChannelPipeline {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addLast0(
|
private void addLast0(final String name, DefaultChannelHandlerContext newCtx) {
|
||||||
final String name, DefaultChannelHandlerContext newCtx) {
|
checkMultiplicity(newCtx);
|
||||||
|
|
||||||
DefaultChannelHandlerContext prev = tail.prev;
|
DefaultChannelHandlerContext prev = tail.prev;
|
||||||
newCtx.prev = prev;
|
newCtx.prev = prev;
|
||||||
newCtx.next = tail;
|
newCtx.next = tail;
|
||||||
|
|
||||||
checkMultiplicity(newCtx);
|
|
||||||
|
|
||||||
prev.next = newCtx;
|
prev.next = newCtx;
|
||||||
tail.prev = newCtx;
|
tail.prev = newCtx;
|
||||||
|
|
||||||
@ -183,14 +180,13 @@ final class DefaultChannelPipeline implements ChannelPipeline {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void addBefore0(final String name, DefaultChannelHandlerContext ctx, DefaultChannelHandlerContext newCtx) {
|
private void addBefore0(final String name, DefaultChannelHandlerContext ctx, DefaultChannelHandlerContext newCtx) {
|
||||||
|
checkMultiplicity(newCtx);
|
||||||
|
|
||||||
newCtx.prev = ctx.prev;
|
newCtx.prev = ctx.prev;
|
||||||
newCtx.next = ctx;
|
newCtx.next = ctx;
|
||||||
|
|
||||||
checkMultiplicity(newCtx);
|
|
||||||
|
|
||||||
ctx.prev.next = newCtx;
|
ctx.prev.next = newCtx;
|
||||||
ctx.prev = newCtx;
|
ctx.prev = newCtx;
|
||||||
|
|
||||||
name2ctx.put(name, newCtx);
|
name2ctx.put(name, newCtx);
|
||||||
|
|
||||||
callHandlerAdded(newCtx);
|
callHandlerAdded(newCtx);
|
||||||
@ -217,12 +213,10 @@ final class DefaultChannelPipeline implements ChannelPipeline {
|
|||||||
|
|
||||||
private void addAfter0(final String name, DefaultChannelHandlerContext ctx, DefaultChannelHandlerContext newCtx) {
|
private void addAfter0(final String name, DefaultChannelHandlerContext ctx, DefaultChannelHandlerContext newCtx) {
|
||||||
checkDuplicateName(name);
|
checkDuplicateName(name);
|
||||||
|
checkMultiplicity(newCtx);
|
||||||
|
|
||||||
newCtx.prev = ctx;
|
newCtx.prev = ctx;
|
||||||
newCtx.next = ctx.next;
|
newCtx.next = ctx.next;
|
||||||
|
|
||||||
checkMultiplicity(newCtx);
|
|
||||||
|
|
||||||
ctx.next.prev = newCtx;
|
ctx.next.prev = newCtx;
|
||||||
ctx.next = newCtx;
|
ctx.next = newCtx;
|
||||||
|
|
||||||
@ -427,7 +421,6 @@ final class DefaultChannelPipeline implements ChannelPipeline {
|
|||||||
|
|
||||||
if (!newCtx.channel().isRegistered() || newCtx.executor().inEventLoop()) {
|
if (!newCtx.channel().isRegistered() || newCtx.executor().inEventLoop()) {
|
||||||
replace0(ctx, newName, newCtx);
|
replace0(ctx, newName, newCtx);
|
||||||
|
|
||||||
return ctx.handler();
|
return ctx.handler();
|
||||||
} else {
|
} else {
|
||||||
future = newCtx.executor().submit(new Runnable() {
|
future = newCtx.executor().submit(new Runnable() {
|
||||||
@ -451,7 +444,6 @@ final class DefaultChannelPipeline implements ChannelPipeline {
|
|||||||
|
|
||||||
private void replace0(DefaultChannelHandlerContext ctx, String newName,
|
private void replace0(DefaultChannelHandlerContext ctx, String newName,
|
||||||
DefaultChannelHandlerContext newCtx) {
|
DefaultChannelHandlerContext newCtx) {
|
||||||
boolean sameName = ctx.name().equals(newName);
|
|
||||||
checkMultiplicity(newCtx);
|
checkMultiplicity(newCtx);
|
||||||
|
|
||||||
DefaultChannelHandlerContext prev = ctx.prev;
|
DefaultChannelHandlerContext prev = ctx.prev;
|
||||||
@ -461,7 +453,7 @@ final class DefaultChannelPipeline implements ChannelPipeline {
|
|||||||
prev.next = newCtx;
|
prev.next = newCtx;
|
||||||
next.prev = newCtx;
|
next.prev = newCtx;
|
||||||
|
|
||||||
if (!sameName) {
|
if (!ctx.name().equals(newName)) {
|
||||||
name2ctx.remove(ctx.name());
|
name2ctx.remove(ctx.name());
|
||||||
}
|
}
|
||||||
name2ctx.put(newName, newCtx);
|
name2ctx.put(newName, newCtx);
|
||||||
|
Loading…
Reference in New Issue
Block a user