TCP接続を受け入れるサーバー(gen_tcpを使用するgen_server)があり、接続ごとにスーパーバイザーを生成します。次に、そのスーパーバイザー(別のより永続的なスーパーバイザーによって監視される)は、プロトコル固有のハンドラーとデータベースと通信するクライアントコンテキストの2つのプロセスを生成します。
プロトコルハンドラーは、ソケットからTCPメッセージを受け取り、それらをクライアントコンテキストのメッセージに変換します。クライアントコンテキストはそれらのメッセージを受け取り、データベースと通信し、プロトコルハンドラーがTCP(telnet、ssh、websockets、HTTP ...)で使用しているプロトコルに変換するメッセージを返し、クライアントに送り返します。
私が知りたいのは、プロトコルハンドラーとクライアントコンテキストプロセスに適切なOTPの動作です。gen_serverを悪用する可能性がありますが、プロセスペアごとに1つの接続です。gen_fsmは、通過する状態がいくつかあるため、プロトコルハンドラーで機能するように見えますが、クライアントコンテキストにはかなり不適切です。クライアントコンテキストのgen_eventについて考えていましたが、これはイベントアグリゲーター向けであり、単一のソースからのイベントのみを処理すると信じられてきました。
私はこれを完全に間違った方法で行っていると言ってください。この複合施設の近くでOTPアプリケーションを作成しようとしたのはこれが初めてです。