君の瞳はまるでルビー - Ruby 関連まとめサイト

xmlrpc モジュールについて - サーバを止めるタイミングをコントロールする方法

最終更新: 2015-03-31 (火) 21:53:22 (2274d)

xmlrpc モジュールについて

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

お名前: