blob: 28b004ea31e1b8f5c2cc36b92c5140adfc9c2280 [file] [log] [blame]
// Copyright 2014 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <chromeos/http/data_reader.h>
namespace chromeos {
namespace http {
MemoryDataReader::MemoryDataReader(const std::string& data)
: MemoryDataReader{data.data(), data.size()} {}
MemoryDataReader::MemoryDataReader(const void* data, size_t data_size)
: data_{reinterpret_cast<const uint8_t*>(data),
reinterpret_cast<const uint8_t*>(data) + data_size} {}
void MemoryDataReader::SetData(const std::string& data) {
SetData(data.data(), data.size());
}
void MemoryDataReader::SetData(const void* data, size_t data_size) {
data_.assign(reinterpret_cast<const uint8_t*>(data),
reinterpret_cast<const uint8_t*>(data) + data_size);
read_pointer_ = 0;
}
bool MemoryDataReader::ReadData(void* buffer,
size_t max_size_to_read,
size_t* size_read,
chromeos::ErrorPtr* error) {
if (read_pointer_ >= data_.size()) {
*size_read = 0;
return true;
}
if (read_pointer_ + max_size_to_read > data_.size())
max_size_to_read = data_.size() - read_pointer_;
memcpy(buffer, data_.data() + read_pointer_, max_size_to_read);
read_pointer_ += max_size_to_read;
*size_read = max_size_to_read;
return true;
}
} // namespace http
} // namespace chromeos