Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
新 generator 実装方針

新 generator 実装方針

概要

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とかがどうなっているかなど。
ディスパッチ用メソッドを生成
オシャレ感がない。 できたソースは誰でも読める。 ヘルパー関数などを駆使すればシンプルにはなると思う。

クライアント

別途考える。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment