WING 用クライアントのプロトコルの解析部分だけをライブラリとして独立させたものです。 現在は単独でビルドできるようにはしてませんが、 そのうち単独で利用できるようになるかもしれません。 字句解析器は GlibScanner を使っているので、 glib が使える環境なら多少の変更で動くはずです。
まだ公開してないけど、自分用の覚え書きとしてこのページが存在してます。
nngs_parser_new() でパーサを作成して、 WING から送られてきた「行」を nngs_parser_inputl() に突っ込むと 適当にパースして「パケット」として出力します。 パケットは、現時点では以下のような構造体になっています (完成するころにはもっと複雑になるはず)。
struct _NNGS_packet {
gint type; /* パケットタイプ */
union {
gpointer data; /* 汎用ポインタ */
gchar *str; /* 文字列 */
gint code; /* エラーコード */
} body;
};
type を調べてから、type にあった形で body をアクセスすることで、 欲しい情報がさくっと手にはいるようになる予定です。
不正なパケット。 パケットを確保したが、なにも設定していない場合にこうなる。 これが見つかったらバグです。
パーサの内部状態が変更されたが、 クライアント本体でやるべきことは無いことを示すパケット。 nngs_parser_inputl() が NULL を返すのはパースエラーとして定義しているので、 それと区別するために利用している。 無視してよいです。
警告音を鳴らせ、という意味のパケット。 これを受け取ったら、なんらかの警告音をならすべし。
ファイルの受信が完了したという意味のパケット。 WING だと使わないと思われる。
エラーが発生したことを示すパケット。 パースエラーではなくて、NNGS サーバが返したエラー。 クライアントはエラー内容をユーザに提示すべし。