# LibTmux.ObservationStream

- **Module:** LibTmux
- **Package:** LibTmux
- **Language:** Julia
- **Kind:** struct
- **Source:** https://github.com/libtmux/libtmux-julia/blob/f3da513be1225d36d5854cd8db5972c01857578e/src/observation.jl#L73
- **Page:** https://libtmux.org/en/julia/latest/reference/libtmux-observationstream/

```
LibTmux.ObservationStream(
    connection::LibTmux.ControlConnection,
    kind::Symbol,
    pane::Union{Nothing, LibTmux.PaneRef},
    names::Tuple,
    subscription::Union{Nothing, String},
    field::Union{Nothing, String},
    queue::Vector{LibTmux.ObservationEvent},
    bytes::Int64,
    capacity::Int64,
    max_bytes::Int64,
    cursor::LibTmux.ObservationCursor,
    consumer::Union{Nothing, Task},
    open::Bool,
    error::Union{Nothing, Exception},
    cleanup_done::Bool,
    reserved::Bool
)

LibTmux.ObservationStream(
    connection,
    kind,
    pane,
    names,
    subscription,
    field,
    queue,
    bytes,
    capacity,
    max_bytes,
    cursor,
    consumer,
    open,
    error,
    cleanup_done,
    reserved
)
```

A single-consumer, bounded event iterator. Use `take!(stream; timeout, cancel)` for an explicit deadline or `for event in stream` for connection-lifetime iteration. Close explicitly or use the producer's do-block form for deterministic cleanup. An unreachable stream is retired eventually; GC is not a cleanup deadline. Each fan-out subscriber owns its byte copies; overflow ends only that subscription.

## Methods

### `ObservationStream` (overload 1)

```julia
LibTmux.ObservationStream(
    connection::LibTmux.ControlConnection,
    kind::Symbol,
    pane::Union{Nothing, LibTmux.PaneRef},
    names::Tuple,
    subscription::Union{Nothing, String},
    field::Union{Nothing, String},
    queue::Vector{LibTmux.ObservationEvent},
    bytes::Int64,
    capacity::Int64,
    max_bytes::Int64,
    cursor::LibTmux.ObservationCursor,
    consumer::Union{Nothing, Task},
    open::Bool,
    error::Union{Nothing, Exception},
    cleanup_done::Bool,
    reserved::Bool
)
```

[Source](https://github.com/libtmux/libtmux-julia/blob/f3da513be1225d36d5854cd8db5972c01857578e/src/observation.jl#L82).

### `ObservationStream` (overload 2)

```julia
LibTmux.ObservationStream(
    connection,
    kind,
    pane,
    names,
    subscription,
    field,
    queue,
    bytes,
    capacity,
    max_bytes,
    cursor,
    consumer,
    open,
    error,
    cleanup_done,
    reserved
)
```

[Source](https://github.com/libtmux/libtmux-julia/blob/f3da513be1225d36d5854cd8db5972c01857578e/src/observation.jl#L82).

## Parameters

- `connection` (`LibTmux.ControlConnection`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 1]`)
- `kind` (`Symbol`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 1]`)
- `pane` (`Union{Nothing, LibTmux.PaneRef}`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 1]`)
- `names` (`Tuple`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 1]`)
- `subscription` (`Union{Nothing, String}`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 1]`)
- `field` (`Union{Nothing, String}`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 1]`)
- `queue` (`Base.Vector{LibTmux.ObservationEvent}`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 1]`)
- `bytes` (`Int64`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 1]`)
- `capacity` (`Int64`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 1]`)
- `max_bytes` (`Int64`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 1]`)
- `cursor` (`LibTmux.ObservationCursor`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 1]`)
- `consumer` (`Union{Nothing, Task}`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 1]`)
- `open` (`Bool`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 1]`)
- `error` (`Union{Nothing, Exception}`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 1]`)
- `cleanup_done` (`Bool`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 1]`)
- `reserved` (`Bool`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 1]`)
- `connection` (`Any`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 2]`)
- `kind` (`Any`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 2]`)
- `pane` (`Any`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 2]`)
- `names` (`Any`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 2]`)
- `subscription` (`Any`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 2]`)
- `field` (`Any`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 2]`)
- `queue` (`Any`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 2]`)
- `bytes` (`Any`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 2]`)
- `capacity` (`Any`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 2]`)
- `max_bytes` (`Any`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 2]`)
- `cursor` (`Any`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 2]`)
- `consumer` (`Any`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 2]`)
- `open` (`Any`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 2]`)
- `error` (`Any`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 2]`)
- `cleanup_done` (`Any`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 2]`)
- `reserved` (`Any`) (for `ObservationStream(connection, kind, pane, names, subscription, field, queue, bytes, capacity, max_bytes, cursor, consumer, open, error, cleanup_done, reserved) [overload 2]`)

## Members

### Other members

- `bytes` (property)
- `capacity` (property)
- `cleanup_done` (property)
- `connection` (property)
- `consumer` (property)
- `cursor` (property)
- `error` (property)
- `field` (property)
- `kind` (property)
- `max_bytes` (property)
- `names` (property)
- `open` (property)
- `pane` (property)
- `queue` (property)
- `reserved` (property)
- `subscription` (property)
