style: spaces -> tabs

This commit is contained in:
Raphael Robatsch 2021-10-29 20:33:27 +02:00
commit 0f81338bb6
11 changed files with 876 additions and 876 deletions

View file

@ -9,63 +9,63 @@
// reads data from Reader, and passes complete lines to Consumer.
template<size_t BufSize>
class LineBuffer {
using Iterator = typename std::array<char, BufSize>::iterator;
std::array<char, BufSize> _buffer;
Iterator _bufferedTo;
Iterator _consumedTo;
bool _discardLine {false};
using Iterator = typename std::array<char, BufSize>::iterator;
std::array<char, BufSize> _buffer;
Iterator _bufferedTo;
Iterator _consumedTo;
bool _discardLine {false};
public:
LineBuffer()
: _bufferedTo {_buffer.begin()}
, _consumedTo {_buffer.begin()}
{
}
LineBuffer()
: _bufferedTo {_buffer.begin()}
, _consumedTo {_buffer.begin()}
{
}
template<typename Reader, typename Consumer>
ssize_t readLines(const Reader& reader, const Consumer& consumer)
{
while (true) {
auto bytesRead = reader(_bufferedTo, _buffer.end() - _bufferedTo);
if (bytesRead <= 0) {
return bytesRead;
}
_bufferedTo += bytesRead;
dispatchLines(consumer);
resetBuffer();
}
}
private:
template<typename Consumer>
void dispatchLines(const Consumer& consumer)
{
while (true) {
auto separator = std::find(_consumedTo, _bufferedTo, '\n');
if (separator == _bufferedTo) {
break;
}
size_t lineLength = separator - _consumedTo;
if (!_discardLine) {
consumer(_consumedTo, lineLength);
}
_consumedTo = separator + 1;
_discardLine = false;
}
}
template<typename Reader, typename Consumer>
ssize_t readLines(const Reader& reader, const Consumer& consumer)
{
while (true) {
auto bytesRead = reader(_bufferedTo, _buffer.end() - _bufferedTo);
if (bytesRead <= 0) {
return bytesRead;
}
_bufferedTo += bytesRead;
dispatchLines(consumer);
resetBuffer();
}
}
private:
template<typename Consumer>
void dispatchLines(const Consumer& consumer)
{
while (true) {
auto separator = std::find(_consumedTo, _bufferedTo, '\n');
if (separator == _bufferedTo) {
break;
}
size_t lineLength = separator - _consumedTo;
if (!_discardLine) {
consumer(_consumedTo, lineLength);
}
_consumedTo = separator + 1;
_discardLine = false;
}
}
void resetBuffer()
{
size_t bytesRemaining = _bufferedTo - _consumedTo;
if (bytesRemaining == _buffer.size()) {
// line too long
_discardLine = true;
_consumedTo = _buffer.begin();
_bufferedTo = _buffer.begin();
} else if (bytesRemaining > 0 && _consumedTo > _buffer.begin()) {
// move the last partial message to the front of the buffer, so a full-sized
// message will fit
std::copy(_consumedTo, _bufferedTo, _buffer.begin());
_consumedTo = _buffer.begin();
_bufferedTo = _consumedTo + bytesRemaining;
}
}
void resetBuffer()
{
size_t bytesRemaining = _bufferedTo - _consumedTo;
if (bytesRemaining == _buffer.size()) {
// line too long
_discardLine = true;
_consumedTo = _buffer.begin();
_bufferedTo = _buffer.begin();
} else if (bytesRemaining > 0 && _consumedTo > _buffer.begin()) {
// move the last partial message to the front of the buffer, so a full-sized
// message will fit
std::copy(_consumedTo, _bufferedTo, _buffer.begin());
_consumedTo = _buffer.begin();
_bufferedTo = _consumedTo + bytesRemaining;
}
}
};