リモートホストによって確認されていないパケットを再送信する必要があるUDPベースのアプリを作成したいと思います。私は2つの可能なアプローチがあると思います:
アプリケーションから送信されるすべてのパケットに対してreactor.callLater()を使用して、確認が受信されたかどうかを確認する関数を呼び出します(受信されていない場合はパケットを再送信します)。
特別なリスト内のすべてのパケットを覚えて、確認が受信されたかどうかこのリストのすべてのメンバーをチェックする関数を定期的に呼び出します。この関数は、reactor.callLater()を介して呼び出されます。タイムアウトは次の再送信(リスト内のすべてのパケットの最短値)に設定されます。
私の質問は次のとおりです。
- 最初のアプローチははるかに単純ですが、Twistedの基盤となる実装はそれを使用するのに十分効率的ですか?
- 2番目のアプローチを使用する場合、reactor.callLater()を中断することは可能ですか?たとえば、通話が20秒間スケジュールされていて、突然5秒の再送信間隔で新しいパケットを送信する必要がある場合はどうでしょうか。
よろしくお願いします
マシエック