diff options
Diffstat (limited to 'net/spdy/spdy_buffer_producer.h')
-rw-r--r-- | net/spdy/spdy_buffer_producer.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/net/spdy/spdy_buffer_producer.h b/net/spdy/spdy_buffer_producer.h new file mode 100644 index 0000000..fe82b1a --- /dev/null +++ b/net/spdy/spdy_buffer_producer.h @@ -0,0 +1,50 @@ +// 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); + + virtual ~SimpleBufferProducer(); + + virtual scoped_ptr<SpdyBuffer> ProduceBuffer() OVERRIDE; + + private: + scoped_ptr<SpdyBuffer> buffer_; + + DISALLOW_COPY_AND_ASSIGN(SimpleBufferProducer); +}; + +} // namespace net + +#endif // NET_SPDY_SPDY_BUFFER_PRODUCER_H_ |