0

我试图弄清楚如何将两个 Netty 管道连接成一个。看起来它应该足够简单。就像是:

List<String> namesOfSecond = second.getNames();
for (String name : namesOfSecond) {
    ChannelHandler handler = second.get(name);
    first.addLast("Second-" + name, handler);
}

但是 getNames() 的 javadoc 只是说“返回处理程序名称的列表”。它没有说明列表的顺序,即使是任何特定的顺序。为了使上述代码正常工作,名称列表必须按照管道中与这些名称对应的处理程序列表的顺序排列。是吗?有保障吗?

还有一个 toMap() 函数,它“将此管道转换为有序 Map,其键是处理程序名称,其值是处理程序。” 我猜这似乎好一点,因为它明确表示地图是有序的。然而,它并没有说明它是由什么订购的。

我猜这些函数以“明显”和“正确”的顺序返回东西——即管道顺序(而不是按名称按词法排序)——但文档没有明确说明,所以我会想确定。有人知道吗?

提前致谢。

4

1 回答 1

1

你的猜测是正确的。这两种机制从头到尾遍历已安装的处理程序(或准确地说是处理程序上下文),在第一种情况下构造一个列表,在第二种情况下构造一个 LinkedHashMap。

于 2012-11-07T16:54:02.880 回答