Class: Rufio::NativeScanner
- Inherits:
-
Object
- Object
- Rufio::NativeScanner
- Defined in:
- lib/rufio/native_scanner.rb,
lib/rufio/native_scanner_zig.rb
Overview
NativeScanner - Rubyベースのディレクトリスキャナー(ネイティブライブラリは削除済み)
Class Method Summary collapse
-
.available_libraries ⇒ Object
利用可能なライブラリをチェック(Rubyのみ).
-
.mode ⇒ Object
現在のモード取得.
-
.mode=(value) ⇒ Object
autoモードの優先順位を更新(zig > ruby).
-
.scan_directory(path) ⇒ Object
ディレクトリをスキャン.
-
.scan_directory_fast(path, max_entries = 1000) ⇒ Object
高速スキャン(エントリ数制限付き).
-
.scan_directory_fast_with_zig(path, max_entries) ⇒ Object
zigで高速スキャン(ポーリング方式).
-
.scan_directory_with_zig(path) ⇒ Object
zigスキャン(ポーリング方式).
-
.version ⇒ Object
バージョン情報取得.
Instance Method Summary collapse
-
#original_available_libraries ⇒ Object
available_librariesを更新.
-
#original_mode= ⇒ Object
zigモードを追加.
-
#original_scan_directory ⇒ Object
scan_directoryメソッドを拡張.
-
#original_scan_directory_fast ⇒ Object
scan_directory_fastメソッドを拡張.
-
#original_version ⇒ Object
versionメソッドを拡張.
Class Method Details
.available_libraries ⇒ Object
利用可能なライブラリをチェック(Rubyのみ)
257 258 259 260 261 |
# File 'lib/rufio/native_scanner.rb', line 257 def available_libraries { ruby: true } end |
.mode ⇒ Object
現在のモード取得
252 253 254 |
# File 'lib/rufio/native_scanner.rb', line 252 def mode @mode ||= 'ruby' end |
.mode=(value) ⇒ Object
autoモードの優先順位を更新(zig > ruby)
246 247 248 249 |
# File 'lib/rufio/native_scanner.rb', line 246 def mode=(value) @mode = 'ruby' @current_library = nil end |
.scan_directory(path) ⇒ Object
ディレクトリをスキャン
264 265 266 |
# File 'lib/rufio/native_scanner.rb', line 264 def scan_directory(path) scan_with_ruby(path) end |
.scan_directory_fast(path, max_entries = 1000) ⇒ Object
高速スキャン(エントリ数制限付き)
269 270 271 |
# File 'lib/rufio/native_scanner.rb', line 269 def scan_directory_fast(path, max_entries = 1000) scan_fast_with_ruby(path, max_entries) end |
.scan_directory_fast_with_zig(path, max_entries) ⇒ Object
zigで高速スキャン(ポーリング方式)
251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 |
# File 'lib/rufio/native_scanner_zig.rb', line 251 def scan_directory_fast_with_zig(path, max_entries) raise StandardError, "Directory does not exist: #{path}" unless Dir.exist?(path) scanner = NativeScannerZigCore.new begin scanner.scan_fast_async(path, max_entries) entries = scanner.wait(timeout: 60) entries.map do |entry| { name: entry[:name], type: entry[:is_dir] ? 'directory' : 'file', size: entry[:size], mtime: entry[:mtime], mode: 0, executable: entry[:executable], hidden: entry[:hidden] } end ensure scanner.close end rescue StandardError => e raise StandardError, "Zig fast scan failed: #{e.}" end |
.scan_directory_with_zig(path) ⇒ Object
zigスキャン(ポーリング方式)
222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 |
# File 'lib/rufio/native_scanner_zig.rb', line 222 def scan_directory_with_zig(path) raise StandardError, "Directory does not exist: #{path}" unless Dir.exist?(path) # 非同期スキャナーを作成してスキャン scanner = NativeScannerZigCore.new begin scanner.scan_async(path) entries = scanner.wait(timeout: 60) # 結果の形式を統一(type フィールドを追加) entries.map do |entry| { name: entry[:name], type: entry[:is_dir] ? 'directory' : 'file', size: entry[:size], mtime: entry[:mtime], mode: 0, executable: entry[:executable], hidden: entry[:hidden] } end ensure scanner.close end rescue StandardError => e raise StandardError, "Zig scan failed: #{e.}" end |
.version ⇒ Object
バージョン情報取得
274 275 276 |
# File 'lib/rufio/native_scanner.rb', line 274 def version "Ruby #{RUBY_VERSION}" end |
Instance Method Details
#original_available_libraries ⇒ Object
available_librariesを更新
320 |
# File 'lib/rufio/native_scanner_zig.rb', line 320 alias_method :original_available_libraries, :available_libraries |
#original_mode= ⇒ Object
zigモードを追加
204 |
# File 'lib/rufio/native_scanner_zig.rb', line 204 alias_method :original_mode=, :mode= |
#original_scan_directory ⇒ Object
scan_directoryメソッドを拡張
278 |
# File 'lib/rufio/native_scanner_zig.rb', line 278 alias_method :original_scan_directory, :scan_directory |
#original_scan_directory_fast ⇒ Object
scan_directory_fastメソッドを拡張
292 |
# File 'lib/rufio/native_scanner_zig.rb', line 292 alias_method :original_scan_directory_fast, :scan_directory_fast |
#original_version ⇒ Object
versionメソッドを拡張
306 |
# File 'lib/rufio/native_scanner_zig.rb', line 306 alias_method :original_version, :version |