gen_fsm動作の実装を生成するMAINプロセスがありますが、このMAINプロセスはスーパーバイザー動作の実装ではなく、単なる別のモジュールです。gen_fsmの実装がGAME_ROOMと呼ばれているとしましょう。私の場合は次のようになります。
- 3人の準備ができたら、MAINプロセスは新しいGAME_ROOMを生成します。
- gen_fsm:start_link関数を使用して新しいGAME_ROOMを開始します。そのため、GAME_ROOMがエラーで終了した場合、メインプロセスが新しいプロセスを生成して、ダウンしたプロセスを置き換えることができます。
- ダウンしたすべてのGAME_ROOMのEXITイベントをMAINプロセスで検出することができました。
問題は次のとおりです。ダウンしたすべてのGAME_ROOM状態を新しい状態に復元する必要があります。私の質問は、gen_fsmのterminate関数を使用してgen_fsmの最新の状態をMAINプロセスに渡すにはどうすればよいので、新しいGAME_ROOMをリスポーンするときに、その状態を渡すことができますか?