たったこれだけで、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版を作る。

スポンサード リンク

この記事のカテゴリ

  • ⇒ MessagePack-RPC for C++をWindowsでも使いたい