# `Sftpd.IODevice`
[🔗](https://github.com/elixir-ssh/sftpd/blob/v0.1.1/lib/sftpd/io_device.ex#L1)

GenServer that manages SFTP file handles.

Reads use backend range callbacks when available. Writes are persisted to a
local temp file immediately and optionally mirrored to backend streaming
callbacks for lower memory usage on large transfers.

# `mode`

```elixir
@type mode() :: :read | :write
```

# `read_strategy`

```elixir
@type read_strategy() :: :range | :buffered
```

# `write_strategy`

```elixir
@type write_strategy() :: :legacy | :streaming | :streaming_replay
```

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `start`

```elixir
@spec start(map()) :: GenServer.on_start()
```

Start an IODevice process (not linked to caller).

---

*Consult [api-reference.md](api-reference.md) for complete listing*
