1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- // 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.
- #ifndef NET_BASE_UPLOAD_BYTES_ELEMENT_READER_H_
- #define NET_BASE_UPLOAD_BYTES_ELEMENT_READER_H_
- #include <stdint.h>
- #include <string>
- #include <vector>
- #include "base/compiler_specific.h"
- #include "net/base/net_export.h"
- #include "net/base/upload_element_reader.h"
- namespace net {
- // An UploadElementReader implementation for bytes. The caller owns |bytes|,
- // and is responsible for ensuring it outlives the UploadBytesElementReader.
- class NET_EXPORT UploadBytesElementReader : public UploadElementReader {
- public:
- UploadBytesElementReader(const char* bytes, uint64_t length);
- UploadBytesElementReader(const UploadBytesElementReader&) = delete;
- UploadBytesElementReader& operator=(const UploadBytesElementReader&) = delete;
- ~UploadBytesElementReader() override;
- const char* bytes() const { return bytes_; }
- uint64_t length() const { return length_; }
- // UploadElementReader overrides:
- const UploadBytesElementReader* AsBytesReader() const override;
- int Init(CompletionOnceCallback callback) override;
- uint64_t GetContentLength() const override;
- uint64_t BytesRemaining() const override;
- bool IsInMemory() const override;
- int Read(IOBuffer* buf,
- int buf_length,
- CompletionOnceCallback callback) override;
- private:
- const char* const bytes_;
- const uint64_t length_;
- uint64_t offset_ = 0;
- };
- // A subclass of UplodBytesElementReader which owns the data given as a vector.
- class NET_EXPORT UploadOwnedBytesElementReader
- : public UploadBytesElementReader {
- public:
- // |data| is cleared by this ctor.
- explicit UploadOwnedBytesElementReader(std::vector<char>* data);
- UploadOwnedBytesElementReader(const UploadOwnedBytesElementReader&) = delete;
- UploadOwnedBytesElementReader& operator=(
- const UploadOwnedBytesElementReader&) = delete;
- ~UploadOwnedBytesElementReader() override;
- // Creates UploadOwnedBytesElementReader with a string.
- static std::unique_ptr<UploadOwnedBytesElementReader> CreateWithString(
- const std::string& string);
- private:
- std::vector<char> data_;
- };
- } // namespace net
- #endif // NET_BASE_UPLOAD_BYTES_ELEMENT_READER_H_
|