xmlrpc モジュールの XMLRPC::Server クラスを使ったサーバを止めるタイミングをコントロールする方法について説明します。
概要
以下にサンプルを示します。
# coding: UTF-8 require 'xmlrpc/server' # XML-RPC のメソッドを定義する。 # 足し算と割り算の2つの機能を提供する。 class Calculator INTERFACE = XMLRPC::interface("calculator") { meth 'int add(int, int)', 'Add two numbers' meth 'int div(int, int)', 'Divide two numbers' } def add(a, b) a + b end def div(a, b) a / b end end # サーバを作成し、Calculator インターフェイスを登録する。 server = XMLRPC::Server.new server.add_handler(Calculator::INTERFACE, Calculator.new) # サーバをスレッドで動かす。 server_thread = Thread.new do server.serve end # 標準入力を待つ。 puts "Please press the enter key, when you end." STDIN.gets # サーバをシャットダウンし、シャットダウンの完了を待つ server.shutdown server_thread.join
このプログラムは、エンターキーを押すとサーバが停止します。
ポイントは以下の2つです。
- サーバをスレッドで動かす。
- サーバを停止したいタイミングで server の shutdown メソッドを呼び出し、スレッドの join メソッドでサーバの停止を待つ。
例ではエンターキーが押されることをトリガーとしていますが、応用すればサーバを止めるタイミングを自由にコントロールできます。
コメント
本ページの内容に関して何かコメントがある方は、以下に記入してください。
コメントはありません。 コメント/xmlrpc/server/control_shutdown