RPC 経由のコア・クライアント制御 |
|
BOINC コア・クライアントは、制御と状態問い合わせのため、 RPC(遠隔手続き呼出し)の機能セットを提供しています。 この機能セットによって、コア・クライアントと独立にGUI(グラフィカルユーザインタフェース)を 開発することができるようになります。
BOINC はこれらの RPCに C++ のインタフェースを提供します。
このインタフェースは下記の機能をもつ GUI_RPC というクラスで
実現されています。
(このクラスのソースコードは、lib/gui_rpc_client.h
に入っており、boinc_cmd.C というプログラムで、
その使い方を示しています。 )
| 機能 | 説明 |
|---|---|
init(char* host) |
指定した計算機(host)に RPC 接続を確立します。 |
authorize(char* password) |
与えたパスワードを用いて、認可のシーケンスを相手との間で実行します。 |
get_state(CC_STATE&) |
対象とするコア・クライアントの「静的な」状態を読み出します。 つまり、コア・クライアントが動かしているプロジェクト、アプリケーション、 アプリケーションの版、ワークユニットとリザルトのことです。 この呼出しは、他の呼出しにくらべ時間がかるので、 初期化のときと、後に必要になったとき、それらの場合だけ行うようにするべきです。 |
get_results(RESULTS&) |
リザルトの一覧を取り出します。 計算が進行中のリザルトは、CPU 時間と 計算完了率 といったものを含んでいるでしょう。 [一覧の中の]それぞれのリザルトには、名前(name)を含んでいるので、 CC_STATE::lookup_result() を使って、現在の静的状態の中から [指定した名前の] リザルトを取り出すことができます。 もし見つからないようでしたら、 get_state() をもう一度呼び出して下さい。 |
get_file_transfers(FILE_TRANSFERS&) |
進行中のファイル転送の一覧を取り出します。 取り出したファイル転送の情報は、名前で対応するプロジェクトが示されています。 この名前を指定すれば、CC_STATE::lookup_project() 関数をつかって、 現在の静的状態の中から対応するプロジェクトを探し出せます。 もし見つからないようでしたら、 get_state() をもう一度呼び出して下さい。 |
get_simple_gui_info(SIMPLE_GUI_INFO&) |
プロジェクトの一覧と活性なリザルトの一覧を返します。 |
get_project_status(vector<PROJECT>&) |
プロジェクトの一覧を取り出します。 基本的なフィールドだけが含まれます。 |
get_disk_usage(vector<PROJECT>&) |
プロジェクトの一覧を取り出します。 この一覧には、 ディスク使用量のフィールドに値が入っています。 |
show_graphics(char* result_name, bool full_screen) |
指定したリザルトを処理しているアプリケーションに、 グラフィクスウィンドーを作るように要求します。 |
project_op(PROJECT&, char* op) |
指定したプロジェクトに制御操作を1つ実施します。 操作を示す
引数 op は、"suspend"、"resume"、"reset"、"detach"、あるいは
"update" のいずれかです。
|
project_attach(
char* url,
char* account_id,
bool use_cached_credentials
) |
指定したプロジェクトに連結(アタッチ)し、[その計算機を計算に参加させます]。 キャッシュされるクレデンシャル(信任状)の値が project_init.xml ファイルの中に入ります。 |
set_run_mode(int mode) |
走行モード(never/auto/always)訳注1を設定します。 |
get_run_mode(int& mode) |
現在の走行モード(never/auto/always)を読み出します。 |
set_network_mode(int mode) |
ネットワーク・モード (never/auto/always) 訳注2を設定します。 |
run_benchmarks() |
ベンチマークを走らせます。 |
set_proxy_settings(PROXY_INFO&) |
プロキシの設定をします。 |
get_proxy_settings(PROXY_INFO&) |
プロキシの設定を取り出します。 |
get_messages(int seqno, MESSAGES&) |
ユーザへ表示するメッセージの一覧を取り出します。 各メッセージには順序番号(1, 2, ...)と、優先度(1=通知、 2=エラー) そして、タイムスタンプがついています。 この RPC要求は、 順序番号が 引数 seqno より大きいという条件をみたすメッセージを取り出します。 取り出したメッセージは、順序番号が増える順番に並べられています。 |
file_transfer_op(FILE_TRANSFER&, char* op) |
あるファイル転送の制御操作を1つ実施します。
操作を示す引数 opは、"abort" あるいは "retry" のいずれかです。
|
result_op(FILE_TRANSFER&, char* op) |
1つの計算中のリザルトに対して制御操作を1つ実施します。
操作を示す引数 op は、
"suspend"、"resume" あるいは "abort" のいずれかです。
|
acct_mgr_rpc(
const char* url,
const char* name,
const char* passwd,
bool use_cached_credentials
) |
指定した URL に向けて アカウント・マネージャの RPC を 1つ実行します。 指定した名前(name)とパスワード(password)が使われます。 パラメタ use_cached_credentials を true と指定すると、 既に存在している URL、参加者名、およびパスワードが使われて、 アカウント・マネージャからの情報で、そのプロジェクトでの情報を更新します。 RPC が成功に終われば、そのアカウント情報をディスクに格納します (この情報は後で、後述の acct_mgr_info() を使って読み出せます)。 URL が空の文字列のときには、ディスクにあるアカウント・マネージャの情報を消去します。 |
acct_mgr_info(ACCT_MGR_INFO&) |
現在のアカウント・マネージャの URL と名前を取り出します(もし記憶されていれば)。 同時に、参加者の名前(name)とパスワードも取り出します。 |
network_query(int& network_wanted) |
コア・クライアントがネットワーク接続を必要としているか、 あるいは、すでにネットワーク接続を使っているなら、変数 network_wanted に ゼロでない値を返します。 ネットワーク接続を切るなら、その前に、 (数秒の間隔をおいてこの機能を呼び出し) 偽[=ゼロ] が 2度続けて戻るまで待って下さい。 |
network_available() |
コア・クライアントに対して、ネットワーク接続が使えることを知らせ、 できる限りのネットワークを使う活動をするように促します。 |
read_global_prefs_override() |
対象のコア・クライアントに対し 'global_prefs_override.xml' ファイルの再読み込みをするように指示します。 コア・クライアントはこのファイルの内容に従って、global preferences を修飾して使います。 |
この RPC の仕組は、XML形式の要求と応答を使います。 C++ ではない言語でクライアントインタフェースを作るのは比較的簡単でしょう。 GUI プログラムは、コア・クライアントに接続するのに、 ポート番号 31416 の TCP ソケットを使います。 GUI プログラムは、この接続の上で繰り返し RPC を実行できます。 個々の応答メッセージの末尾には、文字 '\003 がつきます。
GUI RPC を使うと BOINC クライアントを制御できるので、 (たとえば、プロジェクトへの参加・離脱ができるので)、 BOINC クライアントを認証なしに制御されないよう保護することは重要なことです。 以下の2つのレベルの保護機構があります。
BOINC ディレクトリの中の gui_rpc_auth.cfg というファイルにパスワードを置いておけば、 GUI RPC はこのパスワードをもって認証されなければならなくなります。
このファイルが存在しなければ、パスワードによる保護は行われません。
何も指定しなければ、コア・クライアントはそれが動作している計算機から出された GUI RPC だけを受け入れます。
コア・クライアントを制御できるリモート計算機を指定する方法は以下のように、2つあります。
最終更新時刻 00:47:54, 2006年08月12日(JST)
Copyright © 2008 University of California.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by the Free Software Foundation.
Copyright © 2008 Komori Hitoshi(je2bwm at jarl.com).
Japanese translation from English web pages on BOINC.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by the Free Software Foundation.