0

2つのNettyパイプラインを1つに連結する方法を理解しようとしています。それは十分に簡単なはずです。何かのようなもの:

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

ただし、getNames()のjavadocには、「ハンドラー名のリストが返されます」とだけ書かれています。特定の順序であっても、リストがどのような順序であるかはわかりません。上記のコードが正しく機能するには、名前のリストが、パイプライン内のそれらの名前に対応するハンドラーのリストの順序である必要があります。それは...ですか?保証されていますか?

toMap()関数もあります。この関数は、「このパイプラインを、キーがハンドラー名で、値がハンドラーである順序付けられたマップに変換します」。マップが順序付けられていることを明示的に示しているので、それは少し良いように思えます。ただし、注文内容は記載されていません。

これらの関数は、「明白な」順序と「正しい」順序、つまりパイプラインの順序(たとえば、名前で字句的に順序付けするのではなく)で物事を返すと推測していますが、ドキュメントではこれを明示していないので、確認したい。誰か知っている?

前もって感謝します。

4

1 に答える 1

1

あなたの推測は正しいです。2 つのメカニズムは、インストールされたハンドラー (または正確にはハンドラー コンテキスト) を最初から最後まで反復処理します。最初のケースではリストを作成し、2 番目のケースでは LinkedHashMap を作成します。

于 2012-11-07T16:54:02.880 に答える