# Response

> The sequence of channel responses that answers the channel, what ends it, and what a finish with nothing before it means.

Canonical: https://protocol.diverge.network/2.3.0/endpoints/volumes-fuse-serve/client/stat/response/
Specification revision: 2.3.0

```text
[0][kind: u8][size: u64][mode: u32][uid: u32][gid: u32][atime: 12 bytes][mtime: 12 bytes][ctime: 12 bytes]
                the entry, 57 bytes: kind 0 a file, 1 a directory; every integer big-endian; a time is [secs: u64][nanos: u32]
[1]             nothing at the path
[2][message …]  an error, UTF-8
```

- **The sequence.** Exactly one channel response, the kind, the size, the mode, the owner, the group and the three times, the absence of the entry, or an error, followed
  by the channel response finish.
- **The message.** The bytes after the error byte are UTF-8, not JSON.
- **A finish with nothing.** A channel response finish that no
  channel response precedes states that the server could not serve
  the ask. The client decides whether to ask again.

The channel response is defined by `diverge-sdk-rs/src/provider/endpoints/volumes/fuse_serve/server/channel_response/stat/frame.rs`:

```rust
//! What a server's channel response frame carries on a stat
//! channel of a FUSE serve.

/// The attributes, that there is nothing there, or an error. See [`fuse::stat::response::Frame`](crate::shared::containers::fuse::stat::response::Frame).
///
/// An alias rather than a re-export because this module is real: the
/// path says this scope's answer lives here, and it does, rather than
/// naming somewhere else and hoping a reader follows. What the alias
/// points at is right there in the signature.
pub type Frame<'a> = crate::shared::containers::fuse::stat::response::Frame<'a>;
```
