From 9489d6abfdac6af1fab3a805b48639081dbe987a Mon Sep 17 00:00:00 2001 From: Leeingnyo Date: Tue, 14 Sep 2021 23:07:47 +0900 Subject: [PATCH] Use reference instead of primitive --- src/library/library.cr | 6 +++--- src/library/title.cr | 2 +- src/library/types.cr | 23 +++++++++++++++-------- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/library/library.cr b/src/library/library.cr index 012d14b..0a04b1a 100644 --- a/src/library/library.cr +++ b/src/library/library.cr @@ -143,10 +143,10 @@ class Library storage = Storage.new auto_close: false examine_context : ExamineContext = { - file_count: 0, + file_counter: (YieldCounter.new 1000), cached_contents_signature: {} of String => String, - deleted_title_ids: [] of String, - deleted_entry_ids: [] of String + deleted_title_ids: [] of String, + deleted_entry_ids: [] of String, } @title_ids.select! do |title_id| diff --git a/src/library/title.cr b/src/library/title.cr index 1a8d488..fcc5f2f 100644 --- a/src/library/title.cr +++ b/src/library/title.cr @@ -115,7 +115,7 @@ class Title previous_entries_size = @entries.size @entries.select! do |entry| existence = File.exists? entry.zip_path - yield_process_file context + context["file_counter"].count_and_yield context["deleted_entry_ids"] << entry.id unless existence existence end diff --git a/src/library/types.cr b/src/library/types.cr index 1355fcd..7856660 100644 --- a/src/library/types.cr +++ b/src/library/types.cr @@ -134,14 +134,21 @@ class TitleInfo end end +class YieldCounter + setter threshold : Int32 + + def initialize(@threshold : Int32) + @file_count = 0 + end + + def count_and_yield + @file_count += 1 + Fiber.yield if @file_count % @threshold == 0 + end +end + alias ExamineContext = NamedTuple( - file_count: Int32, + file_counter: YieldCounter, cached_contents_signature: Hash(String, String), deleted_title_ids: Array(String), - deleted_entry_ids: Array(String) -) - -def yield_process_file(context : ExamineContext) - context["file_count"] += 1 - Fiber.yield if context["file_count"] % 1000 == 0 -end + deleted_entry_ids: Array(String))