#ifndef NET_SPDY_SPDY_READ_QUEUE_H_
#define NET_SPDY_SPDY_READ_QUEUE_H_
#include <stdint.h>
#include <cstddef>
#include <memory>
#include "base/containers/circular_deque.h"
#include "base/containers/span.h"
#include "net/base/net_export.h"
namespace net {
class SpdyBuffer;
class NET_EXPORT_PRIVATE SpdyReadQueue {
public:
SpdyReadQueue();
SpdyReadQueue(const SpdyReadQueue&) = delete;
SpdyReadQueue& operator=(const SpdyReadQueue&) = delete;
~SpdyReadQueue();
bool IsEmpty() const;
size_t GetTotalSize() const;
void Enqueue(std::unique_ptr<SpdyBuffer> buffer);
size_t Dequeue(base::span<uint8_t> out);
void Clear();
private:
base::circular_deque<std::unique_ptr<SpdyBuffer>> queue_;
size_t total_size_ = 0;
};
}
#endif