ネットワークソケットをリッスンし、受信したパケットを別のデーモンにルーティングするゲートウェイサービスを作成しています。boost asio を使用する予定ですが、いくつか質問があります。実装を計画しているサーバーの設計は次のとおりです。
ゲートウェイは、boost asio を使用して TCP 接続をリッスンします。
ゲートウェイは、boost asio を使用して、デーモンからストリーミングされた Unix ドメイン接続もリッスンします。
tcp 接続にパケットがあるときはいつでも、ゲートウェイはパケット内のプロトコル タグを調べ、サービスがリッスンする UNIX ドメイン接続にパケットを配置します。
サービス接続にパケットがあるときはいつでも、ゲートウェイはクライアント タグを確認し、それぞれのクライアント接続を確立します。
ゲートウェイ内のすべての記述子は、NOBLOCKING のものになります。
ゲートウェイがサービス接続に書き込んでいるときに、サービス ソケットがいっぱいになると、EAGAIN または EWOULDBLOCK エラーが発生する可能性があります。バッファをキューに入れ、「サービス接続が書き込みの準備を整えるのを待つ」ことで、これに取り組む予定です。
select システム コールを使用すると、「サービス接続が書き込みの準備を整えるのを待っている」ということは、writefd リストに fd を追加し、それを select に渡すことになります。サービス接続の書き込み準備が整ったら、キューに入れられたバッファを接続に書き込み、select の writefdlist からサービス接続を削除します。
ブースト asio で同じことを行うにはどうすればよいですか? そのようなことは可能ですか?