私は多くのネットワークシステムを作成し、ネットワークがどのように機能するかについて良い考えを持っています。しかし、私はいつも巨大なswitchステートメントであるパケット受信機能を持っていることになります。これは私に届き始めています。私は、受信パケットを処理するための優れたエレガントなオブジェクト指向の方法をはるかに望んでいますが、良い解決策を考え出すたびに、私はいつも不足してしまいます。
たとえば、ネットワークサーバーがあるとします。ただそこで応答を待っているだけです。パケットが着信し、サーバーはパケットを検証してから、パケットの処理方法を決定する必要があります。
現時点では、ヘッダーのパケットIDをオンにしてから、各パケットタイプを処理する大量の関数呼び出しを使用してこれを行っています。複雑なネットワークシステムでは、これはモノリシックなswitchステートメントになり、私はそれをこのように扱うのが本当に好きではありません。私が検討した1つの方法は、ハンドラークラスのマップを使用することです。次に、パケットを関連するクラスに渡し、着信データを処理できます。これに関して私が抱えている問題は、各パケットハンドラーをマップに「登録」する方法が必要なことです。つまり、通常、クラスの静的コピーを作成してから、コンストラクターで中央のパケットハンドラーに登録する必要があります。これは機能しますが、実際にはそれを処理するためのエレガントで厄介な方法のように見えます。
編集:同様に、両方の方法で機能する優れたシステムがあれば理想的です。つまり、同じパケットタイプの送信を(明らかに異なる関数を介して)受信するのと同じように簡単に処理できるクラス構造です。
誰かが私に着信パケットを処理するためのより良い方法を教えてもらえますか?リンクや役立つ情報をいただければ幸いです。
問題をうまく説明できなかった場合や、問題をうまく説明できなかった場合の謝罪も、解決策を思い付くことができなかった理由です。