Vector BLF: UncompressedFile.h Source File

Vector BLF

Loading...
Searching...
No Matches
UncompressedFile.h
1// SPDX-FileCopyrightText: 2013-2021 Tobias Lorenz <tobias.lorenz@gmx.net>
2//
3// SPDX-License-Identifier: GPL-3.0-or-later
4
5#pragma once
6
7#include <Vector/BLF/platform.h>
8
9#include <condition_variable>
10#include <limits>
11#include <list>
12#include <memory>
13#include <mutex>
14
15#include <Vector/BLF/AbstractFile.h>
16#include <Vector/BLF/LogContainer.h>
17
18#include <Vector/BLF/vector_blf_export.h>
19
20namespace Vector {
21namespace BLF {
22
36 class VECTOR_BLF_EXPORT UncompressedFile final : public AbstractFile {
37 public:
38 UncompressedFile() = default;
39 ~UncompressedFile() override;
40
41 std::streamsize gcount() const override;
42 void read(char * s, std::streamsize n) override;
43 std::streampos tellg() override;
44 void seekg(std::streamoff off, const std::ios_base::seekdir way = std::ios_base::cur) override;
45 void write(const char * s, std::streamsize n) override;
46 std::streampos tellp() override;
47 bool good() const override;
48 bool eof() const override;
49
53 virtual void abort();
54
60 virtual void write(const std::shared_ptr<LogContainer> & logContainer);
61
65 virtual void nextLogContainer();
66
72 virtual std::streamsize fileSize() const;
73
79 virtual void setFileSize(std::streamsize fileSize);
80
87 virtual void setBufferSize(std::streamsize bufferSize);
88
92 virtual void dropOldData();
93
99 virtual uint32_t defaultLogContainerSize() const;
100
106 virtual void setDefaultLogContainerSize(uint32_t defaultLogContainerSize);
107
109 std::condition_variable tellgChanged;
110
112 std::condition_variable tellpChanged;
113
114 private:
116 bool m_abort {};
117
119 std::list<std::shared_ptr<LogContainer>> m_data {};
120
122 std::streampos m_tellg {};
123
125 std::streampos m_tellp {};
126
128 std::streamsize m_gcount {};
129
131 std::streamsize m_fileSize {std::numeric_limits<std::streamsize>::max()};
132
134 std::streamsize m_bufferSize {std::numeric_limits<std::streamsize>::max()};
135
137 std::ios_base::iostate m_rdstate {std::ios_base::goodbit};
138
140 mutable std::mutex m_mutex {};
141
143 uint32_t m_defaultLogContainerSize {0x20000};
144
155 std::shared_ptr<LogContainer> logContainerContaining(const std::streampos pos) const;
156};
157
158}
159}
Vector::BLF::UncompressedFile
Definition: UncompressedFile.h:36
Vector::BLF::UncompressedFile::tellpChanged
std::condition_variable tellpChanged
Definition: UncompressedFile.h:112
Vector::BLF::UncompressedFile::tellgChanged
std::condition_variable tellgChanged
Definition: UncompressedFile.h:109
Vector::BLF::AbstractFile
Definition: AbstractFile.h:19