たったこれだけで、MessagePack-RPC for C++のmpio使わない移植が出来上がります。
- mpioの一部ヘッダ(TR1, Boost, C++11の切替のため中心)が必要なのでmpioから持ってくる。
- mpioとの接点の部分を書き換える。具体的には、loopクラスとtransportディレクトリ以下のファイルの中身。
- その他、Unix系のシステムコールを呼んでいるところをWindows APIの対応するものに替える。
もちろん、最後の点はWindowsに移植する場合に限った話ですね。そうやってWindows用にIO Completion Port使った実装をgithubに置いています。コンパイルが通ったという程度であることに注意してください。
- on_connect_successやon_acceptからstream_handlerまでunique_socketをlvalue参照で引っ張り回しているのは、本当ならrvalue参照で引っ張り回すところ(Boost.Moveを待たずとも、unique_ptr同様Boost.Interprocess内部に存在するかな?)。
- unique_ptr使ってしまったので、BoostもしくはC++0x必須(mpioではTR1という選択肢もあった)。
- Visual C++ 2010で書いていたため、C++0xまたはBoostのthreadやmutexなどは使わなかった。
ほか、以下の点をやりたいです。
- ConnectExとAcceptExの使用。
- UDPへの対応。
- mpio版との切替の仕組みをもっとスマートに。
- Visual C++ 2005用ソリューション・プロジェクトを作るとか、GCC (MinGW)対応するとか。
- connectとlistenが1個ずつスレッドを占有するのをやめる(タイマー待機のスレッドで一緒に扱えるはず)。
- Boost.Asio版を作る。
スポンサード リンク |
この記事のカテゴリ
- C++ ⇒ MessagePack-RPC for C++をWindowsでも使いたい