| // Copyright (c) 2012 The Chromium 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 "net/base/upload_data.h" |
| |
| #include "base/bind.h" |
| #include "base/location.h" |
| #include "base/logging.h" |
| #include "base/threading/worker_pool.h" |
| |
| namespace net { |
| |
| UploadData::UploadData() |
| : identifier_(0), |
| chunk_callback_(NULL), |
| is_chunked_(false), |
| last_chunk_appended_(false) { |
| } |
| |
| void UploadData::AppendBytes(const char* bytes, int bytes_len) { |
| DCHECK(!is_chunked_); |
| if (bytes_len > 0) { |
| elements_.push_back(UploadElement()); |
| elements_.back().SetToBytes(bytes, bytes_len); |
| } |
| } |
| |
| void UploadData::AppendFileRange(const FilePath& file_path, |
| uint64 offset, uint64 length, |
| const base::Time& expected_modification_time) { |
| DCHECK(!is_chunked_); |
| elements_.push_back(UploadElement()); |
| elements_.back().SetToFilePathRange(file_path, offset, length, |
| expected_modification_time); |
| } |
| |
| void UploadData::AppendChunk(const char* bytes, |
| int bytes_len, |
| bool is_last_chunk) { |
| DCHECK(is_chunked_); |
| DCHECK(!last_chunk_appended_); |
| elements_.push_back(UploadElement()); |
| elements_.back().SetToBytes(bytes, bytes_len); |
| last_chunk_appended_ = is_last_chunk; |
| if (chunk_callback_) |
| chunk_callback_->OnChunkAvailable(); |
| } |
| |
| void UploadData::set_chunk_callback(ChunkCallback* callback) { |
| chunk_callback_ = callback; |
| } |
| |
| void UploadData::SetElements(const std::vector<UploadElement>& elements) { |
| elements_ = elements; |
| } |
| |
| UploadData::~UploadData() { |
| } |
| |
| } // namespace net |