From 414d6a0ee82c780913f7a98768a644c7cf47f17a Mon Sep 17 00:00:00 2001 From: Nanaloveyuki Date: Wed, 20 May 2026 09:34:07 +0800 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Split=20runtime=20file=20c?= =?UTF-8?q?ontrol=20helpers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/runtime_file_controls.mbt | 403 +++++++++++++++++++++++++++++++++ src/runtime_logger.mbt | 404 ---------------------------------- 2 files changed, 403 insertions(+), 404 deletions(-) create mode 100644 src/runtime_file_controls.mbt diff --git a/src/runtime_file_controls.mbt b/src/runtime_file_controls.mbt new file mode 100644 index 0000000..05fff5b --- /dev/null +++ b/src/runtime_file_controls.mbt @@ -0,0 +1,403 @@ +pub fn RuntimeSink::file_available(self : RuntimeSink) -> Bool { + match self { + File(sink) => sink.is_available() + QueuedFile(sink) => sink.sink.is_available() + _ => false + } +} + +pub fn RuntimeSink::file_reopen(self : RuntimeSink, append~ : Bool? = None) -> Bool { + match self { + File(sink) => sink.reopen(append=append) + QueuedFile(sink) => sink.sink.reopen(append=append) + _ => false + } +} + +pub fn RuntimeSink::file_reopen_with_current_policy(self : RuntimeSink) -> Bool { + match self { + File(sink) => sink.reopen_with_current_policy() + QueuedFile(sink) => sink.sink.reopen_with_current_policy() + _ => false + } +} + +pub fn RuntimeSink::file_reopen_append(self : RuntimeSink) -> Bool { + match self { + File(sink) => sink.reopen_append() + QueuedFile(sink) => sink.sink.reopen_append() + _ => false + } +} + +pub fn RuntimeSink::file_reopen_truncate(self : RuntimeSink) -> Bool { + match self { + File(sink) => sink.reopen_truncate() + QueuedFile(sink) => sink.sink.reopen_truncate() + _ => false + } +} + +pub fn RuntimeSink::file_append_mode(self : RuntimeSink) -> Bool { + match self { + File(sink) => sink.append_mode() + QueuedFile(sink) => sink.sink.append_mode() + _ => false + } +} + +pub fn RuntimeSink::file_set_append_mode(self : RuntimeSink, append : Bool) -> Bool { + match self { + File(sink) => { + sink.set_append_mode(append) + true + } + QueuedFile(sink) => { + sink.sink.set_append_mode(append) + true + } + _ => false + } +} + +pub fn RuntimeSink::file_path(self : RuntimeSink) -> String { + match self { + File(sink) => sink.path() + QueuedFile(sink) => sink.sink.path() + _ => "" + } +} + +pub fn RuntimeSink::file_auto_flush(self : RuntimeSink) -> Bool { + match self { + File(sink) => sink.auto_flush_enabled() + QueuedFile(sink) => sink.sink.auto_flush_enabled() + _ => false + } +} + +pub fn RuntimeSink::file_rotation_enabled(self : RuntimeSink) -> Bool { + match self { + File(sink) => sink.rotation_enabled() + QueuedFile(sink) => sink.sink.rotation_enabled() + _ => false + } +} + +pub fn RuntimeSink::file_rotation_config(self : RuntimeSink) -> FileRotation? { + match self { + File(sink) => sink.rotation_config() + QueuedFile(sink) => sink.sink.rotation_config() + _ => None + } +} + +pub fn RuntimeSink::file_set_auto_flush(self : RuntimeSink, enabled : Bool) -> Bool { + match self { + File(sink) => { + sink.set_auto_flush(enabled) + true + } + QueuedFile(sink) => { + sink.sink.set_auto_flush(enabled) + true + } + _ => false + } +} + +pub fn RuntimeSink::file_set_policy(self : RuntimeSink, policy : FileSinkPolicy) -> Bool { + match self { + File(sink) => { + sink.set_policy(policy) + true + } + QueuedFile(sink) => { + sink.sink.set_policy(policy) + true + } + _ => false + } +} + +pub fn RuntimeSink::file_set_rotation(self : RuntimeSink, rotation : FileRotation?) -> Bool { + match self { + File(sink) => { + sink.set_rotation(rotation) + true + } + QueuedFile(sink) => { + sink.sink.set_rotation(rotation) + true + } + _ => false + } +} + +pub fn RuntimeSink::file_clear_rotation(self : RuntimeSink) -> Bool { + match self { + File(sink) => { + sink.clear_rotation() + true + } + QueuedFile(sink) => { + sink.sink.clear_rotation() + true + } + _ => false + } +} + +pub fn RuntimeSink::file_flush(self : RuntimeSink) -> Bool { + match self { + File(sink) => sink.flush() + QueuedFile(sink) => { + ignore(sink.flush()) + sink.sink.flush() + } + _ => false + } +} + +pub fn RuntimeSink::file_close(self : RuntimeSink) -> Bool { + match self { + File(sink) => sink.close() + QueuedFile(sink) => { + ignore(sink.flush()) + sink.sink.close() + } + _ => false + } +} + +pub fn RuntimeSink::file_open_failures(self : RuntimeSink) -> Int { + match self { + File(sink) => sink.open_failures() + QueuedFile(sink) => sink.sink.open_failures() + _ => 0 + } +} + +pub fn RuntimeSink::file_write_failures(self : RuntimeSink) -> Int { + match self { + File(sink) => sink.write_failures() + QueuedFile(sink) => sink.sink.write_failures() + _ => 0 + } +} + +pub fn RuntimeSink::file_flush_failures(self : RuntimeSink) -> Int { + match self { + File(sink) => sink.flush_failures() + QueuedFile(sink) => sink.sink.flush_failures() + _ => 0 + } +} + +pub fn RuntimeSink::file_rotation_failures(self : RuntimeSink) -> Int { + match self { + File(sink) => sink.rotation_failures() + QueuedFile(sink) => sink.sink.rotation_failures() + _ => 0 + } +} + +pub fn RuntimeSink::file_reset_failure_counters(self : RuntimeSink) -> Bool { + match self { + File(sink) => { + sink.reset_failure_counters() + true + } + QueuedFile(sink) => { + sink.sink.reset_failure_counters() + true + } + _ => false + } +} + +pub fn RuntimeSink::file_reset_policy(self : RuntimeSink) -> Bool { + match self { + File(sink) => { + sink.reset_policy() + true + } + QueuedFile(sink) => { + sink.sink.reset_policy() + true + } + _ => false + } +} + +pub fn RuntimeSink::file_policy(self : RuntimeSink) -> FileSinkPolicy { + match self { + File(sink) => sink.policy() + QueuedFile(sink) => sink.sink.policy() + _ => FileSinkPolicy::new(append=false, auto_flush=false, rotation=None) + } +} + +pub fn RuntimeSink::file_default_policy(self : RuntimeSink) -> FileSinkPolicy { + match self { + File(sink) => sink.default_policy() + QueuedFile(sink) => sink.sink.default_policy() + _ => FileSinkPolicy::new(append=false, auto_flush=false, rotation=None) + } +} + +pub fn RuntimeSink::file_policy_matches_default(self : RuntimeSink) -> Bool { + match self { + File(sink) => sink.policy_matches_default() + QueuedFile(sink) => sink.sink.policy_matches_default() + _ => false + } +} + +pub fn RuntimeSink::file_state(self : RuntimeSink) -> FileSinkState { + match self { + File(sink) => sink.state() + QueuedFile(sink) => sink.sink.state() + _ => FileSinkState::new( + "", + available=false, + append=false, + auto_flush=false, + rotation=None, + open_failures=0, + write_failures=0, + flush_failures=0, + rotation_failures=0, + ) + } +} + +pub fn RuntimeSink::file_runtime_state(self : RuntimeSink) -> RuntimeFileState? { + match self { + File(sink) => Some(RuntimeFileState::new(sink.state())) + QueuedFile(sink) => Some( + RuntimeFileState::new( + sink.sink.state(), + queued=true, + pending_count=sink.pending_count(), + dropped_count=sink.dropped_count(), + ), + ) + _ => None + } +} + +pub fn ConfiguredLogger::file_available(self : ConfiguredLogger) -> Bool { + self.sink.file_available() +} + +pub fn ConfiguredLogger::file_reopen(self : ConfiguredLogger, append~ : Bool? = None) -> Bool { + self.sink.file_reopen(append=append) +} + +pub fn ConfiguredLogger::file_reopen_with_current_policy(self : ConfiguredLogger) -> Bool { + self.sink.file_reopen_with_current_policy() +} + +pub fn ConfiguredLogger::file_reopen_append(self : ConfiguredLogger) -> Bool { + self.sink.file_reopen_append() +} + +pub fn ConfiguredLogger::file_reopen_truncate(self : ConfiguredLogger) -> Bool { + self.sink.file_reopen_truncate() +} + +pub fn ConfiguredLogger::file_append_mode(self : ConfiguredLogger) -> Bool { + self.sink.file_append_mode() +} + +pub fn ConfiguredLogger::file_set_append_mode(self : ConfiguredLogger, append : Bool) -> Bool { + self.sink.file_set_append_mode(append) +} + +pub fn ConfiguredLogger::file_path(self : ConfiguredLogger) -> String { + self.sink.file_path() +} + +pub fn ConfiguredLogger::file_auto_flush(self : ConfiguredLogger) -> Bool { + self.sink.file_auto_flush() +} + +pub fn ConfiguredLogger::file_rotation_enabled(self : ConfiguredLogger) -> Bool { + self.sink.file_rotation_enabled() +} + +pub fn ConfiguredLogger::file_rotation_config(self : ConfiguredLogger) -> FileRotation? { + self.sink.file_rotation_config() +} + +pub fn ConfiguredLogger::file_set_auto_flush(self : ConfiguredLogger, enabled : Bool) -> Bool { + self.sink.file_set_auto_flush(enabled) +} + +pub fn ConfiguredLogger::file_set_policy(self : ConfiguredLogger, policy : FileSinkPolicy) -> Bool { + self.sink.file_set_policy(policy) +} + +pub fn ConfiguredLogger::file_set_rotation( + self : ConfiguredLogger, + rotation : FileRotation?, +) -> Bool { + self.sink.file_set_rotation(rotation) +} + +pub fn ConfiguredLogger::file_clear_rotation(self : ConfiguredLogger) -> Bool { + self.sink.file_clear_rotation() +} + +pub fn ConfiguredLogger::file_flush(self : ConfiguredLogger) -> Bool { + self.sink.file_flush() +} + +pub fn ConfiguredLogger::file_close(self : ConfiguredLogger) -> Bool { + self.sink.file_close() +} + +pub fn ConfiguredLogger::file_open_failures(self : ConfiguredLogger) -> Int { + self.sink.file_open_failures() +} + +pub fn ConfiguredLogger::file_write_failures(self : ConfiguredLogger) -> Int { + self.sink.file_write_failures() +} + +pub fn ConfiguredLogger::file_flush_failures(self : ConfiguredLogger) -> Int { + self.sink.file_flush_failures() +} + +pub fn ConfiguredLogger::file_rotation_failures(self : ConfiguredLogger) -> Int { + self.sink.file_rotation_failures() +} + +pub fn ConfiguredLogger::file_reset_failure_counters(self : ConfiguredLogger) -> Bool { + self.sink.file_reset_failure_counters() +} + +pub fn ConfiguredLogger::file_reset_policy(self : ConfiguredLogger) -> Bool { + self.sink.file_reset_policy() +} + +pub fn ConfiguredLogger::file_policy(self : ConfiguredLogger) -> FileSinkPolicy { + self.sink.file_policy() +} + +pub fn ConfiguredLogger::file_default_policy(self : ConfiguredLogger) -> FileSinkPolicy { + self.sink.file_default_policy() +} + +pub fn ConfiguredLogger::file_policy_matches_default(self : ConfiguredLogger) -> Bool { + self.sink.file_policy_matches_default() +} + +pub fn ConfiguredLogger::file_state(self : ConfiguredLogger) -> FileSinkState { + self.sink.file_state() +} + +pub fn ConfiguredLogger::file_runtime_state(self : ConfiguredLogger) -> RuntimeFileState? { + self.sink.file_runtime_state() +} diff --git a/src/runtime_logger.mbt b/src/runtime_logger.mbt index 8ab213b..c118df5 100644 --- a/src/runtime_logger.mbt +++ b/src/runtime_logger.mbt @@ -113,295 +113,6 @@ pub fn RuntimeSink::dropped_count(self : RuntimeSink) -> Int { } } -pub fn RuntimeSink::file_available(self : RuntimeSink) -> Bool { - match self { - File(sink) => sink.is_available() - QueuedFile(sink) => sink.sink.is_available() - _ => false - } -} - -pub fn RuntimeSink::file_reopen(self : RuntimeSink, append~ : Bool? = None) -> Bool { - match self { - File(sink) => sink.reopen(append=append) - QueuedFile(sink) => sink.sink.reopen(append=append) - _ => false - } -} - -pub fn RuntimeSink::file_reopen_with_current_policy(self : RuntimeSink) -> Bool { - match self { - File(sink) => sink.reopen_with_current_policy() - QueuedFile(sink) => sink.sink.reopen_with_current_policy() - _ => false - } -} - -pub fn RuntimeSink::file_reopen_append(self : RuntimeSink) -> Bool { - match self { - File(sink) => sink.reopen_append() - QueuedFile(sink) => sink.sink.reopen_append() - _ => false - } -} - -pub fn RuntimeSink::file_reopen_truncate(self : RuntimeSink) -> Bool { - match self { - File(sink) => sink.reopen_truncate() - QueuedFile(sink) => sink.sink.reopen_truncate() - _ => false - } -} - -pub fn RuntimeSink::file_append_mode(self : RuntimeSink) -> Bool { - match self { - File(sink) => sink.append_mode() - QueuedFile(sink) => sink.sink.append_mode() - _ => false - } -} - -pub fn RuntimeSink::file_set_append_mode(self : RuntimeSink, append : Bool) -> Bool { - match self { - File(sink) => { - sink.set_append_mode(append) - true - } - QueuedFile(sink) => { - sink.sink.set_append_mode(append) - true - } - _ => false - } -} - -pub fn RuntimeSink::file_path(self : RuntimeSink) -> String { - match self { - File(sink) => sink.path() - QueuedFile(sink) => sink.sink.path() - _ => "" - } -} - -pub fn RuntimeSink::file_auto_flush(self : RuntimeSink) -> Bool { - match self { - File(sink) => sink.auto_flush_enabled() - QueuedFile(sink) => sink.sink.auto_flush_enabled() - _ => false - } -} - -pub fn RuntimeSink::file_rotation_enabled(self : RuntimeSink) -> Bool { - match self { - File(sink) => sink.rotation_enabled() - QueuedFile(sink) => sink.sink.rotation_enabled() - _ => false - } -} - -pub fn RuntimeSink::file_rotation_config(self : RuntimeSink) -> FileRotation? { - match self { - File(sink) => sink.rotation_config() - QueuedFile(sink) => sink.sink.rotation_config() - _ => None - } -} - -pub fn RuntimeSink::file_set_auto_flush(self : RuntimeSink, enabled : Bool) -> Bool { - match self { - File(sink) => { - sink.set_auto_flush(enabled) - true - } - QueuedFile(sink) => { - sink.sink.set_auto_flush(enabled) - true - } - _ => false - } -} - -pub fn RuntimeSink::file_set_policy(self : RuntimeSink, policy : FileSinkPolicy) -> Bool { - match self { - File(sink) => { - sink.set_policy(policy) - true - } - QueuedFile(sink) => { - sink.sink.set_policy(policy) - true - } - _ => false - } -} - -pub fn RuntimeSink::file_set_rotation(self : RuntimeSink, rotation : FileRotation?) -> Bool { - match self { - File(sink) => { - sink.set_rotation(rotation) - true - } - QueuedFile(sink) => { - sink.sink.set_rotation(rotation) - true - } - _ => false - } -} - -pub fn RuntimeSink::file_clear_rotation(self : RuntimeSink) -> Bool { - match self { - File(sink) => { - sink.clear_rotation() - true - } - QueuedFile(sink) => { - sink.sink.clear_rotation() - true - } - _ => false - } -} - -pub fn RuntimeSink::file_flush(self : RuntimeSink) -> Bool { - match self { - File(sink) => sink.flush() - QueuedFile(sink) => { - ignore(sink.flush()) - sink.sink.flush() - } - _ => false - } -} - -pub fn RuntimeSink::file_close(self : RuntimeSink) -> Bool { - match self { - File(sink) => sink.close() - QueuedFile(sink) => { - ignore(sink.flush()) - sink.sink.close() - } - _ => false - } -} - -pub fn RuntimeSink::file_open_failures(self : RuntimeSink) -> Int { - match self { - File(sink) => sink.open_failures() - QueuedFile(sink) => sink.sink.open_failures() - _ => 0 - } -} - -pub fn RuntimeSink::file_write_failures(self : RuntimeSink) -> Int { - match self { - File(sink) => sink.write_failures() - QueuedFile(sink) => sink.sink.write_failures() - _ => 0 - } -} - -pub fn RuntimeSink::file_flush_failures(self : RuntimeSink) -> Int { - match self { - File(sink) => sink.flush_failures() - QueuedFile(sink) => sink.sink.flush_failures() - _ => 0 - } -} - -pub fn RuntimeSink::file_rotation_failures(self : RuntimeSink) -> Int { - match self { - File(sink) => sink.rotation_failures() - QueuedFile(sink) => sink.sink.rotation_failures() - _ => 0 - } -} - -pub fn RuntimeSink::file_reset_failure_counters(self : RuntimeSink) -> Bool { - match self { - File(sink) => { - sink.reset_failure_counters() - true - } - QueuedFile(sink) => { - sink.sink.reset_failure_counters() - true - } - _ => false - } -} - -pub fn RuntimeSink::file_reset_policy(self : RuntimeSink) -> Bool { - match self { - File(sink) => { - sink.reset_policy() - true - } - QueuedFile(sink) => { - sink.sink.reset_policy() - true - } - _ => false - } -} - -pub fn RuntimeSink::file_policy(self : RuntimeSink) -> FileSinkPolicy { - match self { - File(sink) => sink.policy() - QueuedFile(sink) => sink.sink.policy() - _ => FileSinkPolicy::new(append=false, auto_flush=false, rotation=None) - } -} - -pub fn RuntimeSink::file_default_policy(self : RuntimeSink) -> FileSinkPolicy { - match self { - File(sink) => sink.default_policy() - QueuedFile(sink) => sink.sink.default_policy() - _ => FileSinkPolicy::new(append=false, auto_flush=false, rotation=None) - } -} - -pub fn RuntimeSink::file_policy_matches_default(self : RuntimeSink) -> Bool { - match self { - File(sink) => sink.policy_matches_default() - QueuedFile(sink) => sink.sink.policy_matches_default() - _ => false - } -} - -pub fn RuntimeSink::file_state(self : RuntimeSink) -> FileSinkState { - match self { - File(sink) => sink.state() - QueuedFile(sink) => sink.sink.state() - _ => FileSinkState::new( - "", - available=false, - append=false, - auto_flush=false, - rotation=None, - open_failures=0, - write_failures=0, - flush_failures=0, - rotation_failures=0, - ) - } -} - -pub fn RuntimeSink::file_runtime_state(self : RuntimeSink) -> RuntimeFileState? { - match self { - File(sink) => Some(RuntimeFileState::new(sink.state())) - QueuedFile(sink) => Some( - RuntimeFileState::new( - sink.sink.state(), - queued=true, - pending_count=sink.pending_count(), - dropped_count=sink.dropped_count(), - ), - ) - _ => None - } -} - pub type ConfiguredLogger = Logger[RuntimeSink] pub fn ConfiguredLogger::flush(self : ConfiguredLogger) -> Int { @@ -424,121 +135,6 @@ pub fn ConfiguredLogger::dropped_count(self : ConfiguredLogger) -> Int { self.sink.dropped_count() } -pub fn ConfiguredLogger::file_available(self : ConfiguredLogger) -> Bool { - self.sink.file_available() -} - -pub fn ConfiguredLogger::file_reopen(self : ConfiguredLogger, append~ : Bool? = None) -> Bool { - self.sink.file_reopen(append=append) -} - -pub fn ConfiguredLogger::file_reopen_with_current_policy(self : ConfiguredLogger) -> Bool { - self.sink.file_reopen_with_current_policy() -} - -pub fn ConfiguredLogger::file_reopen_append(self : ConfiguredLogger) -> Bool { - self.sink.file_reopen_append() -} - -pub fn ConfiguredLogger::file_reopen_truncate(self : ConfiguredLogger) -> Bool { - self.sink.file_reopen_truncate() -} - -pub fn ConfiguredLogger::file_append_mode(self : ConfiguredLogger) -> Bool { - self.sink.file_append_mode() -} - -pub fn ConfiguredLogger::file_set_append_mode(self : ConfiguredLogger, append : Bool) -> Bool { - self.sink.file_set_append_mode(append) -} - -pub fn ConfiguredLogger::file_path(self : ConfiguredLogger) -> String { - self.sink.file_path() -} - -pub fn ConfiguredLogger::file_auto_flush(self : ConfiguredLogger) -> Bool { - self.sink.file_auto_flush() -} - -pub fn ConfiguredLogger::file_rotation_enabled(self : ConfiguredLogger) -> Bool { - self.sink.file_rotation_enabled() -} - -pub fn ConfiguredLogger::file_rotation_config(self : ConfiguredLogger) -> FileRotation? { - self.sink.file_rotation_config() -} - -pub fn ConfiguredLogger::file_set_auto_flush(self : ConfiguredLogger, enabled : Bool) -> Bool { - self.sink.file_set_auto_flush(enabled) -} - -pub fn ConfiguredLogger::file_set_policy(self : ConfiguredLogger, policy : FileSinkPolicy) -> Bool { - self.sink.file_set_policy(policy) -} - -pub fn ConfiguredLogger::file_set_rotation( - self : ConfiguredLogger, - rotation : FileRotation?, -) -> Bool { - self.sink.file_set_rotation(rotation) -} - -pub fn ConfiguredLogger::file_clear_rotation(self : ConfiguredLogger) -> Bool { - self.sink.file_clear_rotation() -} - -pub fn ConfiguredLogger::file_flush(self : ConfiguredLogger) -> Bool { - self.sink.file_flush() -} - -pub fn ConfiguredLogger::file_close(self : ConfiguredLogger) -> Bool { - self.sink.file_close() -} - -pub fn ConfiguredLogger::file_open_failures(self : ConfiguredLogger) -> Int { - self.sink.file_open_failures() -} - -pub fn ConfiguredLogger::file_write_failures(self : ConfiguredLogger) -> Int { - self.sink.file_write_failures() -} - -pub fn ConfiguredLogger::file_flush_failures(self : ConfiguredLogger) -> Int { - self.sink.file_flush_failures() -} - -pub fn ConfiguredLogger::file_rotation_failures(self : ConfiguredLogger) -> Int { - self.sink.file_rotation_failures() -} - -pub fn ConfiguredLogger::file_reset_failure_counters(self : ConfiguredLogger) -> Bool { - self.sink.file_reset_failure_counters() -} - -pub fn ConfiguredLogger::file_reset_policy(self : ConfiguredLogger) -> Bool { - self.sink.file_reset_policy() -} - -pub fn ConfiguredLogger::file_policy(self : ConfiguredLogger) -> FileSinkPolicy { - self.sink.file_policy() -} - -pub fn ConfiguredLogger::file_default_policy(self : ConfiguredLogger) -> FileSinkPolicy { - self.sink.file_default_policy() -} - -pub fn ConfiguredLogger::file_policy_matches_default(self : ConfiguredLogger) -> Bool { - self.sink.file_policy_matches_default() -} - -pub fn ConfiguredLogger::file_state(self : ConfiguredLogger) -> FileSinkState { - self.sink.file_state() -} - -pub fn ConfiguredLogger::file_runtime_state(self : ConfiguredLogger) -> RuntimeFileState? { - self.sink.file_runtime_state() -} - fn build_runtime_sink(config : SinkConfig) -> RuntimeSink { match config.kind { SinkKind::Console => RuntimeSink::Console(console_sink())