Skip to content

Queued-sink-flush

Flush a QueuedSink[S] by draining its queued records into the wrapped sink. This is the direct sink-level shorthand for draining the whole queue.

Interface

moonbit
pub fn[S : Sink] QueuedSink::flush(self : QueuedSink[S]) -> Int {

input

  • self : QueuedSink[S] - Queued sink whose pending records should be fully drained to the wrapped sink.

output

  • Int - Number of drained records.

Explanation

Detailed rules explaining key parameters and behaviors

  • This method delegates directly to self.drain().
  • It drains as many queued records as are currently pending.
  • The return value is the number of records forwarded to the wrapped sink.
  • This helper is the sink-level shorthand for a full manual queue drain.

How to Use

Here are some specific examples provided.

When Need Full Queue Flush Semantics

When a queued sink should forward all pending records:

moonbit
let flushed = sink.flush()

In this example, callers can observe how many queued records were forwarded.

When Need A Simpler Alternative To Explicit Drain Limits

When bounded draining is unnecessary and the whole queue should be released:

moonbit
ignore(sink.flush())

In this example, the queue is drained completely without specifying max_items.

Error Case

e.g.:

  • If the queue is already empty, the method returns 0.

  • If callers need bounded progress instead of a full drain, drain(max_items=...) is the better API.

Notes

  1. Use this helper when code owns a QueuedSink directly and wants a full manual queue release.

  2. This helper returns a count, unlike BufferedSink::flush().

Published from the repository docs folder with VitePress.