1 // Copyright 2014 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.
5 #ifndef SYNC_INTERNAL_API_PROTOCOL_EVENT_BUFFER_H_
6 #define SYNC_INTERNAL_API_PROTOCOL_EVENT_BUFFER_H_
10 #include "base/memory/scoped_vector.h"
11 #include "sync/base/sync_export.h"
17 // A container for ProtocolEvents.
19 // Stores at most kBufferSize events, then starts dropping the oldest events.
20 class SYNC_EXPORT_PRIVATE ProtocolEventBuffer
{
22 static const size_t kBufferSize
;
24 ProtocolEventBuffer();
25 ~ProtocolEventBuffer();
27 // Records an event. May cause the oldest event to be dropped.
28 void RecordProtocolEvent(const ProtocolEvent
& event
);
30 // Returns the buffered contents. Will not clear the buffer.
31 ScopedVector
<ProtocolEvent
> GetBufferedProtocolEvents() const;
34 std::deque
<ProtocolEvent
*> buffer_
;
35 STLElementDeleter
<std::deque
<ProtocolEvent
*> > buffer_deleter_
;
37 DISALLOW_COPY_AND_ASSIGN(ProtocolEventBuffer
);
42 #endif // SYNC_INTERNAL_API_PROTOCOL_EVENT_BUFFER_H_