内容へ移動
alone-doc
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
バックリンク
メディアマネージャー
サイトマップ
ログイン
>
メディアマネージャー
サイトマップ
現在位置:
start
»
alworker
»
ファイルデスクリプタ
トレース:
alworker:ファイルデスクリプタ
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== AlWorker ファイルデスクリプタ ====== require "al_worker_fd" ---- ファイルが読み込み、または書き込み可能になったことをトリガーにして動作する機能です。\\ IO::select() のwrapperであり、典型的にはデバイスファイルを対象に読み書きをします。 ====== サンプル ====== <file ruby fd_server.rb> require "al_worker_fd" class FdServer < AlWorker # イニシャライザでハンドラを定義する def initialize2() @fd = Fd.open( "/dev/cuaU0" ) # IOオブジェクトが他の方法で用意されている場合は、以下の通り newメソッドを使う。 # io_obj = open( "/dev/cuaU0" ) # @fd = Fd.new( io_obj ) # read可能になった時の処理 @fd.ready_read() {|fd| txt = fd.gets # 3.7以前は、txt = @fd.file.gets とする。 puts " READING: #{txt}" } @fd.ready_read() { puts " READING: #{txt}" } end end server = FdServer.new( "fd_server" ) server.run() </file> ===== 解説 ===== Fd.open() または、Fd.new() でオブジェクトを生成し、ready_read() メソッドをコールしておくと、ファイルが読み込み可能になった時に ready_read() に渡したブロックが実行されます。\\ ファイルが書き込み可能になった時に実行したい処理には、ready_write()を使います。\\ ====== 同期・非同期 ====== イベントハンドラは、デフォルトで同期的に呼び出されます。非同期にしたい場合は、mode_sync アトリビュートを変更します。 <code ruby> @fd.mode_sync = :async # 非同期 @fd.mode_sync = :sync # 同期(デフォルト) </code>
alworker/ファイルデスクリプタ.txt
· 最終更新:
2023/08/17 11:07
by
hirohito
ページ用ツール
文書の表示
バックリンク
文書の先頭へ