Skip to content

Castoro::Gateway details

lamatsujun edited this page Mar 29, 2012 · 11 revisions

Castoro::Gateway クラス構成

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 側から見えるクラス図

メソッド一覧

Gateway

メソッド 用途
#initialize Gateway クラスの新しいインスタンスを生成する。
#start サービスを開始する。
#stop サービスを終了する。
#alive? サービス状態の真偽値を返す。 ( true → 開始中, false → 停止中 )

Facade

メソッド 用途
#initialize Facade クラスの新しいインスタンスを生成する。
#start サービスを開始する。
#stop サービスを終了する。
#alive? サービス状態の真偽値を返す。 ( true → 開始中, false → 停止中 )
#recv UDP ソケットからデータを受信する。

Workers

メソッド 用途
#initialize Workers クラスの新しいインスタンスを生成する。
#start サービスを開始する。
#stop サービスを終了する。
#alive? サービス状態の真偽値を返す。 ( true → 開始中, false → 停止中 )

MasterWorkers

メソッド 用途
#initialize MasterWorkers クラスの新しいインスタンスを生成する。
#start サービスを開始する。
#stop サービスを終了する。
#alive? サービス状態の真偽値を返す。 ( true → 開始中, false → 停止中 )

Repository

メソッド 用途
#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 処理を実施する。

BasketCache

メソッド 用途
#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 がアクティブかどうか真偽値を返す。

ConsoleServer

メソッド 用途
#initialize ConsoleServer クラスの新しいインスタンスを生成する。
#start サービスを開始する。
#stop サービスを終了する。
#alive? サービス状態の真偽値を返す。 ( true → 開始中, false → 停止中 )
#status #Repository.status のエイリアス
#dump 引数の io にキャッシュ情報を puts する。
#purge 引数の Peer を含むキャシュ情報を削除する。

Cache

メソッド 用途
#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 のパスを生成する。

Peers

メソッド 用途
#find 引数に指定した容量を満たす Peer を配列で返す。
#[] 引数に指定した ID の Cache::Peer クラスのオブジェクトを返す。

Peer

メソッド 用途
#insert キャッシュに Basket 情報を書込む。
#erase キャッシュの Basket 情報を消去する。
#status= キャッシュに Watchdog 情報を書込む。
#status キャッシュされている Peer の状態をハッシュ形式で返す。
#unlink キャッシュされている Peer の状態を消去する。

ページTOPへ