意外と引っかからないものだな。
有名どころとしてはhttpdがあるけれどちょっと組み込み用には重そうなのでパス。
コンパクトで一通りの機能(authrizationとかCGI、SSLなど)が揃っているものとしてMongooseを発見!とりあえずこれを元にして、組み込み用途に合うようカスタマイズしてみるか。
ざっとソースコードを拝見したところ、
○ソースコード1ファイルで完結するほどコンパクトなのはgood!
○CGIやSSLにも対応。ただしSSLはOpenSSLを前提にしている?
○組み込み用というよりは、Linux/Windows環境での動作を前提にしているため、malloc/freeやスレッドをバンバン使用。しかも、TCP/IPとのインターフェースはsocketであることを前提としている。
○(当然ですが)ファイルシステムがあるものとして実装されている。
○else if節を連発して一連の処理のエラー処理を書いているのは、どうも(私には)読みにくいのでNGという感触。
最終目的は組み込み機器に入れることなので、できれば128KByte程度のROM容量にすべて収まるのが望ましいけど無理かなぁ。
当座の方針としては、
○何らかのRTOS上で動くことを前提とする(スレッド-->タスクに置き換えてマルチセッションに対応させる)
○WEBサーバとして機能させるならファイルシステムの概念は必須だが、組み込み系では苦しい場合があるのでファイルシステムがない状態でも動作可能なようにする。
○CGIは関数呼び出しに置き換える(組み込み系ではコマンドのダイナミックローディングに対応しない場合がほとんど)
○なるべくローカルスタックを消費しないような実装に変更。
○なるべくmalloc/free系関数は使用しないような実装に変更。
○不要な機能は#defineなどで切り離せるように変更。(CGIやSSLの使用有無)
という方向で進めてみたい。
うまくいけば、open sourceとして公開するか?
0 件のコメント:
コメントを投稿