FrontPage

まずは、メモ書き程度で更新していきます

Stackの設計の第一歩

  • TU
    • リゾルバを入れる
    • メッセージの配送先を決定する。
    • 対 proxy 用
    • forking を考慮する必要あり。
    • cancel 処理
  • stack
    • Transport と分離
    • Transport リゾルバ
    • まずは state machine から実装
    • トランザクションはなんの情報を入れるか?
    • 必要機能
      • Route (削る)
      • Record Route (つける)
      • Via
      • From/To Tag
      • Max-Forward
      • Loop Detect

support

  • RFC3261

概念図

  +------------------+ +---+
  | User Agent       | |   |
  +------------------+ |   |
  +------------------+ |   |
  | Transaction User | |   |
  +------------------+ |   |
  +------------------+ |   |
  | Transaction      | |   |
  +------------------+ |   |
  +--------------------+   |
  | Message Parser/Builder |
  +------------------------+
  +------------------------+
  | Transport              |
  +------------------------+

Transport Powered by MINA

  • Transport層を置き換える

概要

  • トランスポートのIO(TCP/UDP)はIoAcceptorなるもので抽象化されていて、 これは放置でOKっぽいかんぢ。
  • 注目するのが、Filterちゃんからの連携。ここからがかなりオモシロ系
    • Message(SIPMessage, PIPMessage)のEnc/Decを用意すれば、IoHanderで一発でMessageが取れる
    • セッション管理はIoSessionなるインタフェイスを使って、実装すれば問題なっしんぐ、ステートパターンを入れ込んで、基本的な状態管理は実装して、セッションは、よろしく管理してくれる
    • NIOが下位レイヤーで実装済

SVN Repository構成

  • 雷電用に「raiden」を切った
  • 開発バージョン用に「testing」を切った