// 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() -> (zx.status status, uint64 size, bool can_seek);

    // 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(uint64 position) -> (zx.status status, zx.handle:SOCKET? socket);
};

/// Distinguished value for the `size` value returned by `SeekingReader.Describe`
/// Indicating that the size isn't known.
const uint64 UNKNOWN_SIZE = 0xffffffffffffffff;

