| // Copyright 2016 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| library fuchsia.media.playback; |
| |
| using zx; |
| |
| // Reader with seek semantics. |
| // TODO(dalesat): Report problems using Problem rather than SeekingReaderResult. |
| protocol SeekingReader { |
| // Describes the content. If there’s a problem accessing the content, this |
| // is expressed by using result. The size_in_bytes may be reported as |
| // UNKNOWN_SIZE if the size of the content is unknown. |
| Describe() -> (struct { |
| status zx.status; |
| size uint64; |
| can_seek bool; |
| }); |
| |
| // Reads the content. If there’s a problem performing the read, this is |
| // expressed using result. If the read succeeded, the reply must contain a |
| // valid socket from which the content can be read. |
| ReadAt(struct { |
| position uint64; |
| }) -> (resource struct { |
| status zx.status; |
| socket zx.handle:<SOCKET, optional>; |
| }); |
| }; |
| |
| /// Distinguished value for the `size` value returned by `SeekingReader.Describe` |
| /// Indicating that the size isn't known. |
| const UNKNOWN_SIZE uint64 = 0xffffffffffffffff; |