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
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}
Definition ObjectQueue.h:26
void abort()
Definition ObjectQueue.cpp:117
T * read()
Definition ObjectQueue.cpp:25
void setBufferSize(uint32_t bufferSize)
Definition ObjectQueue.cpp:142
uint32_t tellg() const
Definition ObjectQueue.cpp:59
void write(T *obj)
Definition ObjectQueue.cpp:67
bool eof() const
Definition ObjectQueue.cpp:109
uint32_t tellp() const
Definition ObjectQueue.cpp:93
void setFileSize(uint32_t fileSize)
Definition ObjectQueue.cpp:130
bool good() const
Definition ObjectQueue.cpp:101
Definition UncompressedFile.h:36
std::condition_variable tellpChanged
Definition UncompressedFile.h:112
std::condition_variable tellgChanged
Definition UncompressedFile.h:109
Definition AbstractFile.h:19