#ifndef COMPONENTS_SYNC_ENGINE_EVENTS_PROTOCOL_EVENT_BUFFER_H_
#define COMPONENTS_SYNC_ENGINE_EVENTS_PROTOCOL_EVENT_BUFFER_H_
#include <stddef.h>
#include <memory>
#include <vector>
#include "base/containers/circular_deque.h"
namespace syncer {
class ProtocolEvent;
class ProtocolEventBuffer {
public:
static const size_t kDefaultBufferSize;
ProtocolEventBuffer();
ProtocolEventBuffer(const ProtocolEventBuffer&) = delete;
ProtocolEventBuffer& operator=(const ProtocolEventBuffer&) = delete;
~ProtocolEventBuffer();
void RecordProtocolEvent(const ProtocolEvent& event);
std::vector<std::unique_ptr<ProtocolEvent>> GetBufferedProtocolEvents() const;
private:
const size_t buffer_size_;
base::circular_deque<std::unique_ptr<ProtocolEvent>> buffer_;
};
}
#endif