Nginxを業務で少し触れたところ微塵も理解できなかったので、自分で作ってみようと思い立った。
socketをbindしてacceptしてread-writeみたいな初歩の初歩は理解しているものの、
イベント駆動型って何?、ノンブロッキングってどこをどうノンブロッキングにしているの?、みたいな踏み込んだ話題を全然理解できていない。
理解していないものを使うのもスキルの1つだと思うが、知っいて困ることは無いよねということで作り始めた。
GitHub - mkei29/rashin: Event driven server written in Rust.
github.com
あとは単純にRustの習熟度を上げたいという気持ちがあり、先週くらいからチマチマ作り始めている。
後追いする人のために、可能な限り日記を付けていこうと考えているが既に力尽きつつある。
今のところはepollを使ったイベント駆動の雛形(204しか返さない)みたいなところまで出来た。
この後IOをノンブロッキングにする作業をしたいと考えているが、epollのエッジトリガー、レベルトリガー周りの挙動がよく理解できておらず少しスタックしている。
最終的な目標としてはこのブログをホストできるところまでは作り込みたいと考えている。
実装したい機能
- ノンブロッキングIOの対応
- タイムアウトの実装
- マルチスレッド対応
- HTTPパーサー周りの実装
- TLS対応
- ...etc
残作業はまだまだ一杯あってしばらくは遊べそうだ。