spdy_buffer_producer.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Copyright (c) 2013 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef NET_SPDY_SPDY_BUFFER_PRODUCER_H_
  5. #define NET_SPDY_SPDY_BUFFER_PRODUCER_H_
  6. #include <memory>
  7. #include "base/compiler_specific.h"
  8. #include "net/base/net_export.h"
  9. namespace net {
  10. class SpdyBuffer;
  11. // An object which provides a SpdyBuffer for writing. We pass these
  12. // around instead of SpdyBuffers since some buffers have to be
  13. // generated "just in time".
  14. class NET_EXPORT_PRIVATE SpdyBufferProducer {
  15. public:
  16. SpdyBufferProducer();
  17. // Produces the buffer to be written. Will be called at most once.
  18. virtual std::unique_ptr<SpdyBuffer> ProduceBuffer() = 0;
  19. SpdyBufferProducer(const SpdyBufferProducer&) = delete;
  20. SpdyBufferProducer& operator=(const SpdyBufferProducer&) = delete;
  21. virtual ~SpdyBufferProducer();
  22. };
  23. // A simple wrapper around a single SpdyBuffer.
  24. class NET_EXPORT_PRIVATE SimpleBufferProducer : public SpdyBufferProducer {
  25. public:
  26. explicit SimpleBufferProducer(std::unique_ptr<SpdyBuffer> buffer);
  27. SimpleBufferProducer(const SimpleBufferProducer&) = delete;
  28. SimpleBufferProducer& operator=(const SimpleBufferProducer&) = delete;
  29. ~SimpleBufferProducer() override;
  30. std::unique_ptr<SpdyBuffer> ProduceBuffer() override;
  31. private:
  32. std::unique_ptr<SpdyBuffer> buffer_;
  33. };
  34. } // namespace net
  35. #endif // NET_SPDY_SPDY_BUFFER_PRODUCER_H_