generator は以下の機能を目的としている。
- 言語に依存しない形でRPCのインターフェースをIDLとして記述し、検証できる
- IDLに対応するサーバープログラムと、実装の雛形が生成できる
- IDLから対応するクライアント用のコードが自動的に生成される
現状ではmpidl + mpconvで実現している部分を、単一のプログラムで実現したい。 生成するコードは以下のとおり
- XXX_server.cpp
- サーバーのソース。従来、XXX_server.hppとXXX_impl.cppに分かれていた部分を統一する。 mainは含ませるべき?
- XXX_server_impl.cpp / XXX_server_impl.hpp
- サーバーの実装の雛形。
- XXX_keeper.cpp
- キーパーのソース。ヘッダは要らない。
- XXX_types.hpp
- 利用する型が記述されたファイル。これはXXX_server.hppに含んでしまっても良いかも? typeとmessageの扱いに関する議論参照。
- 各種言語用クライアント
- C++/Python/Ruby/Javaをサポート。
無理して関数やbindに拘る必要はないが、どっちもどっち?
- 関数で頑張る
- 現状の方針。 エラーが起こった時に読めない。 bindとかがどうなっているかなど。
- ディスパッチ用メソッドを生成
- オシャレ感がない。 できたソースは誰でも読める。 ヘルパー関数などを駆使すればシンプルにはなると思う。
別途考える。