/*
 * Copyright 2013 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#include "SkTypes.h"

class SkStream;
class SkStreamRewindable;

/**
 *  Specialized stream that buffers the first X bytes of a stream,
 *  where X is passed in by the user. Note that unlike some buffered
 *  stream APIs, once more bytes than can fit in the buffer are read,
 *  no more buffering is done. This stream is designed for a use case
 *  where the caller knows that rewind will only be called from within
 *  X bytes (inclusive), and the wrapped stream is not necessarily
 *  able to rewind at all.
 */
class SkFrontBufferedStream {
public:
    /**
     *  Creates a new stream that wraps and buffers an SkStream.
     *  @param stream SkStream to buffer. If stream is NULL, NULL is
     *      returned. When this call succeeds (i.e. returns non NULL),
     *      SkFrontBufferedStream is expected to be the only owner of
     *      stream, so it should be unreffed and no longer used directly.
     *  @param minBufferSize Minimum size of buffer required.
     *  @return An SkStream that can buffer at least minBufferSize, or
     *      NULL on failure.
     */
    static SkStreamRewindable* Create(SkStream* stream, size_t minBufferSize);
};
