// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef NET_SPDY_SPDY_BUFFER_PRODUCER_H_
#define NET_SPDY_SPDY_BUFFER_PRODUCER_H_

#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
#include "net/base/net_export.h"

namespace net {

class SpdyBuffer;

// An object which provides a SpdyBuffer for writing. We pass these
// around instead of SpdyBuffers since some buffers have to be
// generated "just in time".
class NET_EXPORT_PRIVATE SpdyBufferProducer {
 public:
  SpdyBufferProducer();

  // Produces the buffer to be written. Will be called at most once.
  virtual scoped_ptr<SpdyBuffer> ProduceBuffer() = 0;

  virtual ~SpdyBufferProducer();

 private:
  DISALLOW_COPY_AND_ASSIGN(SpdyBufferProducer);
};

// A simple wrapper around a single SpdyBuffer.
class NET_EXPORT_PRIVATE SimpleBufferProducer : public SpdyBufferProducer {
 public:
  explicit SimpleBufferProducer(scoped_ptr<SpdyBuffer> buffer);

  ~SimpleBufferProducer() override;

  scoped_ptr<SpdyBuffer> ProduceBuffer() override;

 private:
  scoped_ptr<SpdyBuffer> buffer_;

  DISALLOW_COPY_AND_ASSIGN(SimpleBufferProducer);
};

}  // namespace net

#endif  // NET_SPDY_SPDY_BUFFER_PRODUCER_H_
