Skip to content

Instantly share code, notes, and snippets.

@unnonouno
Created January 22, 2013 13:53
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save unnonouno/4594800 to your computer and use it in GitHub Desktop.
Save unnonouno/4594800 to your computer and use it in GitHub Desktop.
新 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