1*a3a45f30SXin Li // Copyright 2017 The Chromium OS Authors. All rights reserved. 2*a3a45f30SXin Li // Use of this source code is governed by a BSD-style license that can be 3*a3a45f30SXin Li // found in the LICENSE file. 4*a3a45f30SXin Li 5*a3a45f30SXin Li #include "bsdiff/compressor_buffer.h" 6*a3a45f30SXin Li 7*a3a45f30SXin Li #include "bsdiff/logging.h" 8*a3a45f30SXin Li 9*a3a45f30SXin Li namespace bsdiff { 10*a3a45f30SXin Li GetCompressedData()11*a3a45f30SXin Liconst std::vector<uint8_t>& CompressorBuffer::GetCompressedData() { 12*a3a45f30SXin Li if (!comp_chunks_.empty()) { 13*a3a45f30SXin Li size_t chunks_size = 0; 14*a3a45f30SXin Li for (const auto& chunk : comp_chunks_) 15*a3a45f30SXin Li chunks_size += chunk.size(); 16*a3a45f30SXin Li comp_data_.reserve(comp_data_.size() + chunks_size); 17*a3a45f30SXin Li for (const auto& chunk : comp_chunks_) { 18*a3a45f30SXin Li comp_data_.insert(comp_data_.end(), chunk.begin(), chunk.end()); 19*a3a45f30SXin Li } 20*a3a45f30SXin Li comp_chunks_.clear(); 21*a3a45f30SXin Li } 22*a3a45f30SXin Li return comp_data_; 23*a3a45f30SXin Li } 24*a3a45f30SXin Li AddDataToChunks(size_t data_size)25*a3a45f30SXin Livoid CompressorBuffer::AddDataToChunks(size_t data_size) { 26*a3a45f30SXin Li if (data_size > comp_buffer_.size()) { 27*a3a45f30SXin Li LOG(ERROR) << "data size: " << data_size 28*a3a45f30SXin Li << " is larger than buffer size: " << comp_buffer_.size(); 29*a3a45f30SXin Li return; 30*a3a45f30SXin Li } 31*a3a45f30SXin Li comp_chunks_.emplace_back(comp_buffer_.data(), 32*a3a45f30SXin Li comp_buffer_.data() + data_size); 33*a3a45f30SXin Li } 34*a3a45f30SXin Li 35*a3a45f30SXin Li } // namespace bsdiff 36