Skip to content

Architecture WorkFlow @ja

Hiroaki Otsu edited this page Apr 13, 2014 · 8 revisions

plsenseの全体のワークフローについて

  • 矢印はソケット通信を表します
  • 青の吹き出しは通知のための通信です
  • 橙の吹き出しは要求のための通信です
  • 表記されているのは主なものであり、上記以外にも通信は発生します
  • クライアントとは、特別なことをしない限り、plsenseコマンドのプロセスを意味します

サーバの起動

各サーバは起動すると、クライアントの要求に迅速に答えるため、 自身の扱うデータをキャッシュから読み込んだり、キャッシュがなければ生成を行ったりします。 WorkServerは、この中でFindWorkerを起動し、インストールモジュールを検索させます。 ここで対象になっているプロジェクトはデフォルトプロジェクトです。

クライアントからのロケーション通知

クライアントはテキストエディタがファイルを開いたり、カーソルがファイル内を移動するのに伴って、 サーバにそのロケーション情報を通知しなければなりません。 ロケーション情報には、ファイルパス、モジュール名、メソッド名があります。 WorkServerは、この通知をトリガに、BuildWorkerやFindWorkerを起動します。 詳しくは、 ワーカープロセスの管理 を参照して下さい。

BuildWorker

BuildWorkerは指定されたモジュールをビルドし、そのモジュールについて、以下の処理を行います。

  • そのモジュール情報をMainServerに通知
  • 必要があれば、そのモジュールが参照しているモジュールのビルドをWorkServerに要求
  • そのモジュールについての ルート解決 をResolveServerに要求

FindWorker

FindWorkerは指定されたディレクトリ配下のモジュールを検索し、 見つかったモジュールについて、以下の処理を行います。

  • キャッシュが存在しなければ、新しいモジュールのオブジェクトを生成しキャッシュに保存
  • そのモジュールがプロジェクトモジュールならば、WorkServerへビルド要求
  • キャッシュが存在していても、以下の場合は、WorkServerへビルド要求
    • ファイルの更新日付が変わっている
    • ファイルのパスが変わっている
  • そのモジュール情報をMainServerへ通知
Clone this wiki locally