Skip to content

File-sink-reopen-with-current-policy ​

Reopen a FileSink using the currently stored runtime policy. This helper is useful when direct recovery should happen without supplying a one-off append override.

Interface ​

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

input ​

  • self : FileSink - File sink that should be reopened with current policy.

output ​

  • Bool - Whether reopen succeeded.

Explanation ​

Detailed rules explaining key parameters and behaviors

  • This helper reuses the sink's currently stored append policy.
  • It differs from reopen(...) because it does not accept a per-call append override.
  • Existing handle state is handled through the underlying reopen(...) behavior.
  • On failure, the sink remains unavailable and open_failures is updated by the reopen path.

How to Use ​

Here are some specific examples provided.

When Need Policy-preserving Recovery ​

When a file sink should be reopened without changing runtime append behavior:

moonbit
ignore(sink.reopen_with_current_policy())

In this example, recovery reuses the runtime policy already stored on the sink.

When Separate Recovery From Policy Mutation ​

When append mode should be controlled elsewhere:

moonbit
let ok = sink.reopen_with_current_policy()

In this example, reopen is explicit while policy mutation stays separate.

Error Case ​

e.g.:

  • If callers want to change append behavior during reopen, reopen(...), reopen_append(), or reopen_truncate() are better APIs.

  • This helper still depends on the underlying file backend being able to reopen the path successfully.

Notes ​

  1. Use this helper when recovery should respect the currently stored runtime policy.

  2. It is clearer than passing no override through a more general reopen API.

Published from the repository docs folder with VitePress.