一汁三菜

インターネットのインフラよりな技術の話題、Web周りの技術的な話題、趣味のマラソン、旅行、その他日々の記録をしています。

ライブラリ作り

WindowsC++を使った開発をする時に、現在もメンテナンスされていてかつ実用的に動くXMPPクライアントライブラリを見つけられなかったので、仕方無しに作ってみようかと思います。いつまで続くのかは分かりませんが。

まずはStream, Stanzaクラス。この辺りは無難。Stanzaクラスの子クラスにはMessage, Presence, IQクラス。この辺りは誰が作っても変わらないはず。

ユーザーに直接見せるクラスはXmppClientクラス。受信したStanzaを受け取るコールバックメソッドがあったり、またRosterの管理をしたり。巨大なクラスになりそうなので、あまりに巨大になりそうだったら直接Stanzaを扱う低レベルな部分と、高レベルな部分でクラスを分割するような形になるのかも。

小道具として必要な物がいくつかあります。SAXパーサライクなXMLライブラリは自作予定。Winsockは2を利用。Validity Constraintsにまで準拠するような厳密な解釈をしようとしなければ、おそらく自作してしまった方が早いかと。TLSはOpenSSLを使った方がいいのか、WindowsSSL API(という物があるらしい)を使った方がいいのか、よく分かっていない。SASLはCyrus SASLを使う。Stringprepはどうしようか未定ですが、RFCを解析してプログラム中に表を持つようにするのかも。

まずはRFCの範囲の実装を頑張ります。XEPの範囲は追々。