Skip to content

File-sink-flush

Flush a FileSink directly. This helper is the concrete file-sink flush surface when code is working with a FileSink value instead of a configured runtime wrapper.

Interface

moonbit
pub fn FileSink::flush(self : FileSink) -> Bool {

input

  • self : FileSink - File sink to flush.

output

  • Bool - Whether the flush operation succeeded.

Explanation

Detailed rules explaining key parameters and behaviors

  • If the sink currently has no file handle, the method returns false.
  • On flush failure, flush_failures is incremented.
  • On success, failure counters are left unchanged.
  • This helper does not reopen the sink automatically.
  • If another alias already closed the same underlying sink handle, this method also returns false.

How to Use

Here are some specific examples provided.

When Need Explicit File Durability Steps

When a concrete file sink should flush buffered file output explicitly:

moonbit
ignore(sink.flush())

In this example, the caller requests a direct file flush on the sink value itself.

When Need A Flush Success Flag

When code should branch on the outcome of a direct file flush:

moonbit
let ok = sink.flush()

In this example, the result tells the caller whether the current flush succeeded.

Error Case

e.g.:

  • If the sink is unavailable, the method returns false.

  • If repeated flush failures matter operationally, inspect flush_failures() or state() instead of ignoring the result forever.

Notes

  1. Prefer this helper when you are working with a FileSink directly rather than through ConfiguredLogger.

  2. This method is narrower than automatic per-write flushing controlled by auto_flush policy.

Published from the repository docs folder with VitePress.