master
h 34 lines 611 Bytes
Raw
1 /*++
2
3 Copyright (c) Microsoft. All rights reserved.
4
5 Module Name:
6
7 RingBuffer.h
8
9 Abstract:
10
11 This file contains declarations for the RingBuffer class.
12
13 --*/
14
15 #pragma once
16
17 class RingBuffer
18 {
19 public:
20 RingBuffer() = delete;
21 RingBuffer(size_t size);
22
23 void Insert(std::string_view data);
24 std::vector<std::string> GetLastDelimitedStrings(char Delimiter, size_t Count) const;
25 std::string Get() const;
26
27 private:
28 std::pair<std::string_view, std::string_view> Contents() const;
29
30 mutable wil::srwlock m_lock;
31 std::vector<char> m_buffer;
32 size_t m_maxSize;
33 size_t m_offset;
34 };