-
Notifications
You must be signed in to change notification settings - Fork 3
Castoro::Gateway details
lamatsujun edited this page Mar 29, 2012
·
11 revisions
Home > Components >
Gateway を構成するクラスは以下の通り。
クラス | 用途 |
---|---|
Gateway | Gateway のメインクラス。 以下に挙げるクラスのインスタンスを有する。各々のインスタンスの起動・停止などを担う。 |
Facade | Gateway が取り扱うすべての UDP ソケットのエンドポイント。 IO を多重化して、#recv メソッドによりいずれかのソケットから受信する。 |
Workers | Facade から UDP パケットをリスンしてプロトコルを解析。 解析結果である各々のコマンドに応じた処理を実施する。 |
MasterWorkers | Gateway(master) 用のWorkersクラス。 各々のコマンドに応じ Island へリレーなど、処理を実施する。 |
Repository | 後述の BasketCache を有し、Cache への手続きを抽象化する Workers からのリクエストに応じる。 |
BasketCache | 後述の Cache を有し、Cache への手続きの同期をとる。 |
Cache | Gateway のキャッシュ機能の実体。 C++ で作成されており、シーケンシャルに増加する ID に対するキャッシングに最適化されている。 |
ConsoleServer | Gateway のステータス問合せとダンプ要求に応答する。 唯一の TCP Socket を有する。 |
Peers | Peer クラスのインスタンスを保持するクラス。 Peer 情報検索などを行う。 |
Peer | Peer のメインクラス。 キャッシュ情報の INSERT, DROP, GET, ALIVE, STATUS 要求など、キャッシュに対する操作を記述したクラス。 |
- Ruby 側から見えるクラス図
メソッド | 用途 |
---|---|
#initialize | Gateway クラスの新しいインスタンスを生成する。 |
#start | サービスを開始する。 |
#stop | サービスを終了する。 |
#alive? | サービス状態の真偽値を返す。 ( true → 開始中, false → 停止中 ) |
メソッド | 用途 |
---|---|
#initialize | Facade クラスの新しいインスタンスを生成する。 |
#start | サービスを開始する。 |
#stop | サービスを終了する。 |
#alive? | サービス状態の真偽値を返す。 ( true → 開始中, false → 停止中 ) |
#recv | UDP ソケットからデータを受信する。 |
メソッド | 用途 |
---|---|
#initialize | Workers クラスの新しいインスタンスを生成する。 |
#start | サービスを開始する。 |
#stop | サービスを終了する。 |
#alive? | サービス状態の真偽値を返す。 ( true → 開始中, false → 停止中 ) |
メソッド | 用途 |
---|---|
#initialize | MasterWorkers クラスの新しいインスタンスを生成する。 |
#start | サービスを開始する。 |
#stop | サービスを終了する。 |
#alive? | サービス状態の真偽値を返す。 ( true → 開始中, false → 停止中 ) |
メソッド | 用途 |
---|---|
#initialize | Repository クラスの新しいインスタンスを生成する。 |
#query | GET リクエストに応じた処理を実施する。 |
#fetch_available_peers | CREATE リクエストに応じた処理を実施する。 |
#insert_cache_record | INSERT リクエストに応じた処理を実施する。 |
#drop_cache_record | #Repository.drop のエイリアス |
#drop | キャッシュから指定された host, Basket の情報を削除する。 |
#update_watchdog_status | ALIVE リクエストに応じた処理を実施する。 |
#status | キャッシュの統計情報を返す。 |
#dump | 引数の io にキャッシュ情報を puts する。 |
#storables | 書き込み可能な Peer 数を返す。 |
#capacity | Gateway 配下のアクテイブな Peer の書き込み可能領域合計を返す。 |
#if_replication_is_insufficient | レプリケーションが不十分の場合、yield 処理を実施する。 |
メソッド | 用途 |
---|---|
#initialize | BasketCache クラスの新しいインスタンスを生成する。 |
#insert | キャッシュに新しい Basket 情報を記憶する。 |
#erase_by_peer_and_key | キャッシュから既存の Basket 情報を破棄する。 |
#find_by_key | BasketKey を元にキャッシュから Basket 情報を取得する。 |
#find_peers | Basket 作成条件を満たす Peer を配列で返す。 |
#preferentially_find_peers | Basket 作成条件を満たす Peer を配列で返す。 空き容量の多い Peer を優先して返す。 |
#set_status | Peer の Watchdog 情報を記憶する。 |
#status | キャッシュの統計情報を返す。 |
#dump | 引数の io にキャッシュ情報を puts する。 |
#active_peer_count | キャッシュからアクティブな Peer 数を返す。 |
#available_total_space | Peer の保存可能な合計領域を返す。 |
#all_active? | 指定された全ての Peer がアクティブかどうか真偽値を返す。 |
メソッド | 用途 |
---|---|
#initialize | ConsoleServer クラスの新しいインスタンスを生成する。 |
#start | サービスを開始する。 |
#stop | サービスを終了する。 |
#alive? | サービス状態の真偽値を返す。 ( true → 開始中, false → 停止中 ) |
#status | #Repository.status のエイリアス |
#dump | 引数の io にキャッシュ情報を puts する。 |
#purge | 引数の Peer を含むキャシュ情報を削除する。 |
メソッド | 用途 |
---|---|
#initialize | Cache クラスの新しいインスタンスを生成する。 |
#find | 指定した Basket 情報を配列で返す。 |
#peers | Cache::Peers クラスのインスタンスを返す。 |
#stat | 指定したキャッシュステータスを返す。 |
#watchdog_limit | Watchdog リミットを参照する。 |
#dump | キャッシュしている Basket 情報を引数に puts する。 |
#find_peers | #peers.find(require_spaces) のエイリアス |
#insert_element | #peers[peer].insert(content_id, content_type, revision) のエイリアス |
#erase_element | #peers[peer].erase(content_id, content_type, revision) のエイリアス |
#get_peer_status | #peers[peer].status のエイリアス |
#set_peer_status | #peers[peer].status= のエイリアス |
#make_nfs_path | 引数から Basket のパスを生成する。 |
メソッド | 用途 |
---|---|
#find | 引数に指定した容量を満たす Peer を配列で返す。 |
#[] | 引数に指定した ID の Cache::Peer クラスのオブジェクトを返す。 |
メソッド | 用途 |
---|---|
#insert | キャッシュに Basket 情報を書込む。 |
#erase | キャッシュの Basket 情報を消去する。 |
#status= | キャッシュに Watchdog 情報を書込む。 |
#status | キャッシュされている Peer の状態をハッシュ形式で返す。 |
#unlink | キャッシュされている Peer の状態を消去する。 |