ChannelHandlerContext调用链(HeadContext、TailContext也是ChannelHandlerContext,ChannelHandlerContext内部维护了next和prev):
入站:DefaultChannelPipeline
H
e
a
d
C
o
n
t
e
x
t
(
内
部
无
h
a
n
d
l
e
r
引
用
)
−
−
>
D
e
f
a
u
l
t
C
h
a
n
n
e
l
H
a
n
d
l
e
r
C
o
n
t
e
x
t
(
T
e
s
t
S
e
r
v
e
r
I
n
i
t
i
a
l
i
z
e
r
(
C
h
a
n
n
e
l
I
n
i
t
i
a
l
i
z
e
r
也
是
h
a
n
d
l
e
r
)
)
−
−
>
D
e
f
a
u
l
t
C
h
a
n
n
e
l
H
a
n
d
l
e
r
C
o
n
t
e
x
t
(
H
t
t
p
S
e
r
v
e
r
C
o
d
e
c
)
−
−
>
D
e
f
a
u
l
t
C
h
a
n
n
e
l
H
a
n
d
l
e
r
C
o
n
t
e
x
t
(
T
e
s
t
H
t
t
p
S
e
r
v
e
r
H
a
n
d
l
e
r
)
−
−
>
D
e
f
a
u
l
t
C
h
a
n
n
e
l
P
i
p
e
l
i
n
e
HeadContext(内部无handler引用)-->DefaultChannelHandlerContext(TestServerInitializer(ChannelInitializer也是handler))-->DefaultChannelHandlerContext(HttpServerCodec) -->DefaultChannelHandlerContext(TestHttpServerHandler)-->DefaultChannelPipeline
HeadContext(内部无handler引用)−−>DefaultChannelHandlerContext(TestServerInitializer(ChannelInitializer也是handler))−−>DefaultChannelHandlerContext(HttpServerCodec)−−>DefaultChannelHandlerContext(TestHttpServerHandler)−−>DefaultChannelPipelineTailContext(内部无handler引用)–>next为null,调用完毕
出站:DefaultChannelPipeline
T
a
i
l
C
o
n
t
e
x
t
(
内
部
无
h
a
n
d
l
e
r
引
用
)
−
−
>
D
e
f
a
u
l
t
C
h
a
n
n
e
l
H
a
n
d
l
e
r
C
o
n
t
e
x
t
(
T
e
s
t
H
t
t
p
S
e
r
v
e
r
H
a
n
d
l
e
r
)
,
T
e
s
t
H
t
t
p
S
e
r
v
e
r
H
a
n
d
l
e
r
为
入
站
处
理
器
,
跳
过
−
−
>
D
e
f
a
u
l
t
C
h
a
n
n
e
l
H
a
n
d
l
e
r
C
o
n
t
e
x
t
(
H
t
t
p
S
e
r
v
e
r
C
o
d
e
c
)
−
−
>
D
e
f
a
u
l
t
C
h
a
n
n
e
l
H
a
n
d
l
e
r
C
o
n
t
e
x
t
(
T
e
s
t
S
e
r
v
e
r
I
n
i
t
i
a
l
i
z
e
r
(
C
h
a
n
n
e
l
I
n
i
t
i
a
l
i
z
e
r
也
是
h
a
n
d
l
e
r
)
)
,
该
初
始
化
处
理
器
为
入
站
处
理
器
,
跳
过
−
−
>
D
e
f
a
u
l
t
C
h
a
n
n
e
l
P
i
p
e
l
i
n
e
TailContext(内部无handler引用)-->DefaultChannelHandlerContext(TestHttpServerHandler),TestHttpServerHandler为入站处理器,跳过-->DefaultChannelHandlerContext(HttpServerCodec) -->DefaultChannelHandlerContext(TestServerInitializer(ChannelInitializer也是handler)),该初始化处理器为入站处理器,跳过-->DefaultChannelPipeline
TailContext(内部无handler引用)−−>DefaultChannelHandlerContext(TestHttpServerHandler),TestHttpServerHandler为入站处理器,跳过−−>DefaultChannelHandlerContext(HttpServerCodec)−−>DefaultChannelHandlerContext(TestServerInitializer(ChannelInitializer也是handler)),该初始化处理器为入站处理器,跳过−−>DefaultChannelPipelineHeadContext(内部无handler引用)
–>prev为null,调用完毕
netty的handler调用链机制
最新推荐文章于 2024-04-24 10:00:00 发布