Class Writer<I, O>Abstract

Continuation of how to write subsequent [[Output]] tokens to a stream. Writer enables efficient, interruptible writing of network protocols and data formats, without intermediate buffering.

Output tokens

A Writer writes tokens to an Output writer. Output tokens are modeled as primitive numbers, commonly representing Unicode code points, or raw octets. Each Writer implementation specifies the semantic type of output tokens it produces.

Writer states

A Writer is always in one of three states: _cont_​inue, done, or error. The cont state indicates that [[pull]] is ready to produce Output; the done state indicates that writing terminated successfully, and that [[bind]] will return the written result; the error state indicates that writing terminated in failure, and that [[trap]] will return the write error. Writer subclasses default to the cont state.

Feeding input

The [[feed]] method returns a Writer that represents the continuation of how to write the given input object to subsequent Output writers. feed can be used to specify an initial object to write, or to change the object to be written.

Pulling output

The [[pull]] method incrementally writes as much Output as it can, before returning another Writer that represents the continuation of how to write additional Output. The Output passed to pull is only guaranteed to be valid for the duration of the method call; references to the provided Output instance must not be stored.

Writer results

A Writer produces a written result of type O, obtained via the [[bind]] method. bind is only guaranteed to return a result when in the done state; though bind may optionally make available partial results in other states. A failed Writer provides a write error via the [[trap]] method. trap is only guaranteed to return an error when in the error state.

Continuations

A Writer instance represents a continuation of how to write remaining Output. Rather than writing a complete output in one go, a Writer takes an Output chunk and returns another Writer instance that knows how to write subsequent Output chunks. This enables non-blocking, incremental writing that can be interrupted whenever an Output writer runs out of space. A Writer terminates by returning a continuation in either the done state, or the error state. [[Writer.done]] returns a Writer in the done state. [[Writer.error]] returns a Writer in the error state.

Forking

The [[fork]] method passes an out-of-band condition to a Writer, yielding a Writer continuation whose behavior may be altered by the given condition. For example, a console Writer might support a fork condition that changes the color and style of printed text. The types of conditions accepted by fork, and their intended semantics, are implementation defined.

Type Parameters

  • I = unknown

  • O = unknown

Hierarchy

  • Writer

Constructors

  • Type Parameters

    • I = unknown

    • O = unknown

    Returns Writer<I, O>

Methods

  • Returns a Writer that continues writing that Writer, after it finishes writing this Writer.

    Type Parameters

    • O2

    Parameters

    Returns Writer<never, O2>

  • Casts a done Writer to a different input type. A Writer in the done state can have any input type.

    Type Parameters

    • I2

    Returns Writer<I2, O>

    Throws

    WriterException if this Writer is not in the done state.

  • Casts an errored Writer to different input and output types. A Writer in the error state can have any input type, and any output type.

    Type Parameters

    • I2

    • O2

    Returns Writer<I2, O2>

    Throws

    WriterException if this Writer is not in the error state.

  • Returns the written result. Only guaranteed to return a result when in the done state.

    Returns O

    Throws

    Error if this Writer is not in the done state.

  • Returns a Writer that represents the continuation of how to write the given input object.

    Parameters

    • input: I

    Returns Writer<I, O>

    Throws

    WriterException if this Writer does not know how to write the given input object.

  • Returns a Writer continuation whose behavior may be altered by the given out-of-band condition.

    Parameters

    • condition: unknown

    Returns Writer<I, O>

  • Returns true when [[pull]] is able to produce Output, i.e. this Writer is in the cont state.

    Returns boolean

  • Returns true when writing has terminated successfully, and [[bind]] will return the written result, i.e. this Writer is in the done state.

    Returns boolean

  • Returns true when writing has terminated in failure, and [[trap]] will return the write error, i.e. this Writer is in the error state.

    Returns boolean

  • Incrementally writes as much output as possible, and returns another Writer that represents the continuation of how to write additional Output. If output enters the done state, pull must return a terminated Writer, i.e. a Writer in the done state, or in the error state. The given output is only guaranteed to be valid for the duration of the method call; references to output must not be stored.

    Parameters

    Returns Writer<I, O>

  • Returns the write error. Only guaranteed to return an error when in the error state.

    Returns Error

    Throws

    Error if this Writer is not in the error state.

  • Returns a Writer in the done state that binds the given written value.

    Type Parameters

    • I

    • O

    Parameters

    • value: O

    Returns Writer<I, O>

  • Returns a Writer in the done state that never binds a value.

    Type Parameters

    • I

    Returns Writer<I, never>

  • Returns a Writer in the error state that traps the given write error.

    Type Parameters

    • I

    • O

    Parameters

    • error: Error

    Returns Writer<I, O>

Generated using TypeDoc