| Index: sync/internal_api/protocol_event_buffer.cc
|
| diff --git a/sync/internal_api/protocol_event_buffer.cc b/sync/internal_api/protocol_event_buffer.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2e9ba64407b44ea4a8b1b08b5ec485f447d0263b
|
| --- /dev/null
|
| +++ b/sync/internal_api/protocol_event_buffer.cc
|
| @@ -0,0 +1,37 @@
|
| +// Copyright 2014 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.
|
| +
|
| +#include "sync/internal_api/protocol_event_buffer.h"
|
| +
|
| +#include "sync/internal_api/public/events/protocol_event.h"
|
| +
|
| +namespace syncer {
|
| +
|
| +const size_t ProtocolEventBuffer::kBufferSize = 6;
|
| +
|
| +ProtocolEventBuffer::ProtocolEventBuffer()
|
| + : buffer_deleter_(&buffer_) {}
|
| +
|
| +ProtocolEventBuffer::~ProtocolEventBuffer() {}
|
| +
|
| +void ProtocolEventBuffer::RecordProtocolEvent(const ProtocolEvent& event) {
|
| + buffer_.push_back(event.Clone().release());
|
| + if (buffer_.size() > kBufferSize) {
|
| + ProtocolEvent* to_delete = buffer_.front();
|
| + buffer_.pop_front();
|
| + delete to_delete;
|
| + }
|
| +}
|
| +
|
| +ScopedVector<ProtocolEvent>
|
| +ProtocolEventBuffer::GetBufferedProtocolEvents() const {
|
| + ScopedVector<ProtocolEvent> ret;
|
| + for (std::deque<ProtocolEvent*>::const_iterator it = buffer_.begin();
|
| + it != buffer_.end(); ++it) {
|
| + ret.push_back((*it)->Clone().release());
|
| + }
|
| + return ret.Pass();
|
| +}
|
| +
|
| +} // namespace syncer
|
|
|